Index: test/CodeGen/X86/memoryFolding-avx.mir =================================================================== --- test/CodeGen/X86/memoryFolding-avx.mir +++ test/CodeGen/X86/memoryFolding-avx.mir @@ -0,0 +1,7211 @@ +# RUN: llc -run-pass greedy -stack-alignment=64 -o - %s | FileCheck %s +# Stack alignment set to 64 to enable folding of aligned mov instructions. +--- | + attributes #0 = { "target-features" = "+avx,+aes,+pclmul" } + attributes #1 = { optsize "target-features" = "+avx,+aes,+pclmul" } + define void @stack_fold_vextractf128mr_vextractf128rr_test() #0 { ret void } + define void @stack_fold_vextractpsmr_vextractpsrr_test() #0 { ret void } + define void @stack_fold_vmovapdymr_vmovapdyrr_test() #0 { ret void } + define void @stack_fold_vmovapdmr_vmovapdrr_test() #0 { ret void } + define void @stack_fold_vmovapsymr_vmovapsyrr_test() #0 { ret void } + define void @stack_fold_vmovapsmr_vmovapsrr_test() #0 { ret void } + define void @stack_fold_vmovdqaymr_vmovdqayrr_test() #0 { ret void } + define void @stack_fold_vmovdqamr_vmovdqarr_test() #0 { ret void } + define void @stack_fold_vmovdquymr_vmovdquyrr_test() #0 { ret void } + define void @stack_fold_vmovdqumr_vmovdqurr_test() #0 { ret void } + define void @stack_fold_vmovpdi2dimr_vmovpdi2dirr_test() #0 { ret void } + define void @stack_fold_vmovpqi2qimr_vmovpqi2qirr_test() #0 { ret void } + define void @stack_fold_vmovpqito64mr_vmovpqito64rr_test() #0 { ret void } + define void @stack_fold_vmovsdto64mr_vmovsdto64rr_test() #0 { ret void } + define void @stack_fold_vmovss2dimr_vmovss2dirr_test() #0 { ret void } + define void @stack_fold_vmovupdymr_vmovupdyrr_test() #0 { ret void } + define void @stack_fold_vmovupdmr_vmovupdrr_test() #0 { ret void } + define void @stack_fold_vmovupsymr_vmovupsyrr_test() #0 { ret void } + define void @stack_fold_vmovupsmr_vmovupsrr_test() #0 { ret void } + define void @stack_fold_vpextrbmr_vpextrbrr_test() #0 { ret void } + define void @stack_fold_vpextrdmr_vpextrdrr_test() #0 { ret void } + define void @stack_fold_vpextrqmr_vpextrqrr_test() #0 { ret void } + define void @stack_fold_vpextrwmr_vpextrwri_test() #0 { ret void } + define void @stack_fold_aesimcrm_aesimcrr_test() #0 { ret void } + define void @stack_fold_aeskeygenassist128rm_aeskeygenassist128rr_test() #0 { ret void } + define void @stack_fold_int_vcomisdrm_int_vcomisdrr_test() #0 { ret void } + define void @stack_fold_int_vcomissrm_int_vcomissrr_test() #0 { ret void } + define void @stack_fold_int_vcvttsd2si64rm_int_vcvttsd2si64rr_test() #0 { ret void } + define void @stack_fold_int_vcvttsd2sirm_int_vcvttsd2sirr_test() #0 { ret void } + define void @stack_fold_int_vcvttss2si64rm_int_vcvttss2si64rr_test() #0 { ret void } + define void @stack_fold_int_vcvttss2sirm_int_vcvttss2sirr_test() #0 { ret void } + define void @stack_fold_int_vucomisdrm_int_vucomisdrr_test() #0 { ret void } + define void @stack_fold_int_vucomissrm_int_vucomissrr_test() #0 { ret void } + define void @stack_fold_vaesimcrm_vaesimcrr_test() #0 { ret void } + define void @stack_fold_vaeskeygenassist128rm_vaeskeygenassist128rr_test() #0 { ret void } + define void @stack_fold_vcomisdrm_vcomisdrr_test() #0 { ret void } + define void @stack_fold_vcomissrm_vcomissrr_test() #0 { ret void } + define void @stack_fold_vcvtdq2pdyrm_vcvtdq2pdyrr_test() #0 { ret void } + define void @stack_fold_vcvtdq2pdrm_vcvtdq2pdrr_test() #0 { ret void } + define void @stack_fold_vcvtdq2psyrm_vcvtdq2psyrr_test() #0 { ret void } + define void @stack_fold_vcvtdq2psrm_vcvtdq2psrr_test() #0 { ret void } + define void @stack_fold_vcvtpd2dqyrm_vcvtpd2dqyrr_test() #0 { ret void } + define void @stack_fold_vcvtpd2dqrm_vcvtpd2dqrr_test() #0 { ret void } + define void @stack_fold_vcvtpd2psyrm_vcvtpd2psyrr_test() #0 { ret void } + define void @stack_fold_vcvtpd2psrm_vcvtpd2psrr_test() #0 { ret void } + define void @stack_fold_vcvtps2dqyrm_vcvtps2dqyrr_test() #0 { ret void } + define void @stack_fold_vcvtps2dqrm_vcvtps2dqrr_test() #0 { ret void } + define void @stack_fold_vcvtps2pdyrm_vcvtps2pdyrr_test() #0 { ret void } + define void @stack_fold_vcvtps2pdrm_vcvtps2pdrr_test() #0 { ret void } + define void @stack_fold_vcvtsd2si64rm_vcvtsd2si64rr_test() #0 { ret void } + define void @stack_fold_vcvtsd2sirm_vcvtsd2sirr_test() #0 { ret void } + define void @stack_fold_vcvtss2si64rm_vcvtss2si64rr_test() #0 { ret void } + define void @stack_fold_vcvtss2sirm_vcvtss2sirr_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqyrm_vcvttpd2dqyrr_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqrm_vcvttpd2dqrr_test() #0 { ret void } + define void @stack_fold_vcvttps2dqyrm_vcvttps2dqyrr_test() #0 { ret void } + define void @stack_fold_vcvttps2dqrm_vcvttps2dqrr_test() #0 { ret void } + define void @stack_fold_vcvttsd2si64rm_vcvttsd2si64rr_test() #0 { ret void } + define void @stack_fold_vcvttsd2sirm_vcvttsd2sirr_test() #0 { ret void } + define void @stack_fold_vcvttss2si64rm_vcvttss2si64rr_test() #0 { ret void } + define void @stack_fold_vcvttss2sirm_vcvttss2sirr_test() #0 { ret void } + define void @stack_fold_vmov64topqirm_vmov64topqirr_test() #0 { ret void } + define void @stack_fold_vmovapdyrm_vmovapdyrr_test() #0 { ret void } + define void @stack_fold_vmovapdrm_vmovapdrr_test() #0 { ret void } + define void @stack_fold_vmovapsyrm_vmovapsyrr_test() #0 { ret void } + define void @stack_fold_vmovapsrm_vmovapsrr_test() #0 { ret void } + define void @stack_fold_vmovddupyrm_vmovddupyrr_test() #0 { ret void } + define void @stack_fold_vmovdduprm_vmovdduprr_test() #0 { ret void } + define void @stack_fold_vmovdi2pdirm_vmovdi2pdirr_test() #0 { ret void } + define void @stack_fold_vmovdi2ssrm_vmovdi2ssrr_test() #0 { ret void } + define void @stack_fold_vmovdqayrm_vmovdqayrr_test() #0 { ret void } + define void @stack_fold_vmovdqarm_vmovdqarr_test() #0 { ret void } + define void @stack_fold_vmovdquyrm_vmovdquyrr_test() #0 { ret void } + define void @stack_fold_vmovdqurm_vmovdqurr_test() #0 { ret void } + define void @stack_fold_vmovqi2pqirm_vmovzpqilo2pqirr_test() #0 { ret void } + define void @stack_fold_vmovshdupyrm_vmovshdupyrr_test() #0 { ret void } + define void @stack_fold_vmovshduprm_vmovshduprr_test() #0 { ret void } + define void @stack_fold_vmovsldupyrm_vmovsldupyrr_test() #0 { ret void } + define void @stack_fold_vmovslduprm_vmovslduprr_test() #0 { ret void } + define void @stack_fold_vmovupdyrm_vmovupdyrr_test() #0 { ret void } + define void @stack_fold_vmovupdrm_vmovupdrr_test() #0 { ret void } + define void @stack_fold_vmovupsyrm_vmovupsyrr_test() #0 { ret void } + define void @stack_fold_vmovupsrm_vmovupsrr_test() #0 { ret void } + define void @stack_fold_vpabsbrm_vpabsbrr_test() #0 { ret void } + define void @stack_fold_vpabsdrm_vpabsdrr_test() #0 { ret void } + define void @stack_fold_vpabswrm_vpabswrr_test() #0 { ret void } + define void @stack_fold_vpcmpestrirm_vpcmpestrirr_test() #0 { ret void } + define void @stack_fold_vpcmpestrm128rm_vpcmpestrm128rr_test() #0 { ret void } + define void @stack_fold_vpcmpistrirm_vpcmpistrirr_test() #0 { ret void } + define void @stack_fold_vpcmpistrm128rm_vpcmpistrm128rr_test() #0 { ret void } + define void @stack_fold_vpermilpdymi_vpermilpdyri_test() #0 { ret void } + define void @stack_fold_vpermilpdmi_vpermilpdri_test() #0 { ret void } + define void @stack_fold_vpermilpsymi_vpermilpsyri_test() #0 { ret void } + define void @stack_fold_vpermilpsmi_vpermilpsri_test() #0 { ret void } + define void @stack_fold_vphminposuwrm128_vphminposuwrr128_test() #0 { ret void } + define void @stack_fold_vpmovsxbdrm_vpmovsxbdrr_test() #0 { ret void } + define void @stack_fold_vpmovsxbqrm_vpmovsxbqrr_test() #0 { ret void } + define void @stack_fold_vpmovsxbwrm_vpmovsxbwrr_test() #0 { ret void } + define void @stack_fold_vpmovsxdqrm_vpmovsxdqrr_test() #0 { ret void } + define void @stack_fold_vpmovsxwdrm_vpmovsxwdrr_test() #0 { ret void } + define void @stack_fold_vpmovsxwqrm_vpmovsxwqrr_test() #0 { ret void } + define void @stack_fold_vpmovzxbdrm_vpmovzxbdrr_test() #0 { ret void } + define void @stack_fold_vpmovzxbqrm_vpmovzxbqrr_test() #0 { ret void } + define void @stack_fold_vpmovzxbwrm_vpmovzxbwrr_test() #0 { ret void } + define void @stack_fold_vpmovzxdqrm_vpmovzxdqrr_test() #0 { ret void } + define void @stack_fold_vpmovzxwdrm_vpmovzxwdrr_test() #0 { ret void } + define void @stack_fold_vpmovzxwqrm_vpmovzxwqrr_test() #0 { ret void } + define void @stack_fold_vpshufdmi_vpshufdri_test() #0 { ret void } + define void @stack_fold_vpshufhwmi_vpshufhwri_test() #0 { ret void } + define void @stack_fold_vpshuflwmi_vpshuflwri_test() #0 { ret void } + define void @stack_fold_vptestyrm_vptestyrr_test() #0 { ret void } + define void @stack_fold_vptestrm_vptestrr_test() #0 { ret void } + define void @stack_fold_vrcppsym_vrcppsyr_test() #0 { ret void } + define void @stack_fold_vrcppsm_vrcppsr_test() #0 { ret void } + define void @stack_fold_vroundpdm_vroundpdr_test() #0 { ret void } + define void @stack_fold_vroundpsm_vroundpsr_test() #0 { ret void } + define void @stack_fold_vroundypdm_vroundypdr_test() #0 { ret void } + define void @stack_fold_vroundypsm_vroundypsr_test() #0 { ret void } + define void @stack_fold_vrsqrtpsym_vrsqrtpsyr_test() #0 { ret void } + define void @stack_fold_vrsqrtpsm_vrsqrtpsr_test() #0 { ret void } + define void @stack_fold_vsqrtpdym_vsqrtpdyr_test() #0 { ret void } + define void @stack_fold_vsqrtpdm_vsqrtpdr_test() #0 { ret void } + define void @stack_fold_vsqrtpsym_vsqrtpsyr_test() #0 { ret void } + define void @stack_fold_vsqrtpsm_vsqrtpsr_test() #0 { ret void } + define void @stack_fold_vtestpdyrm_vtestpdyrr_test() #0 { ret void } + define void @stack_fold_vtestpdrm_vtestpdrr_test() #0 { ret void } + define void @stack_fold_vtestpsyrm_vtestpsyrr_test() #0 { ret void } + define void @stack_fold_vtestpsrm_vtestpsrr_test() #0 { ret void } + define void @stack_fold_vucomisdrm_vucomisdrr_test() #0 { ret void } + define void @stack_fold_vucomissrm_vucomissrr_test() #0 { ret void } + define void @stack_fold_aesdeclastrm_aesdeclastrr_test() #0 { ret void } + define void @stack_fold_aesdecrm_aesdecrr_test() #0 { ret void } + define void @stack_fold_aesenclastrm_aesenclastrr_test() #0 { ret void } + define void @stack_fold_aesencrm_aesencrr_test() #0 { ret void } + define void @stack_fold_int_vcmpsdrm_int_vcmpsdrr_test() #0 { ret void } + define void @stack_fold_int_vcmpssrm_int_vcmpssrr_test() #0 { ret void } + define void @stack_fold_int_vcvtsd2ssrm_int_vcvtsd2ssrr_test() #0 { ret void } + define void @stack_fold_int_vcvtsi2sd64rm_int_vcvtsi2sd64rr_test() #0 { ret void } + define void @stack_fold_int_vcvtsi2sdrm_int_vcvtsi2sdrr_test() #0 { ret void } + define void @stack_fold_int_vcvtsi2ss64rm_int_vcvtsi2ss64rr_test() #0 { ret void } + define void @stack_fold_int_vcvtsi2ssrm_int_vcvtsi2ssrr_test() #0 { ret void } + define void @stack_fold_int_vcvtss2sdrm_int_vcvtss2sdrr_test() #0 { ret void } + define void @stack_fold_pclmulqdqrm_pclmulqdqrr_test() #0 { ret void } + define void @stack_fold_vaddpdyrm_vaddpdyrr_test() #0 { ret void } + define void @stack_fold_vaddpdrm_vaddpdrr_test() #0 { ret void } + define void @stack_fold_vaddpsyrm_vaddpsyrr_test() #0 { ret void } + define void @stack_fold_vaddpsrm_vaddpsrr_test() #0 { ret void } + define void @stack_fold_vaddsdrm_vaddsdrr_test() #0 { ret void } + define void @stack_fold_vaddsdrm_int_vaddsdrr_int_test() #0 { ret void } + define void @stack_fold_vaddssrm_vaddssrr_test() #0 { ret void } + define void @stack_fold_vaddssrm_int_vaddssrr_int_test() #0 { ret void } + define void @stack_fold_vaddsubpdyrm_vaddsubpdyrr_test() #0 { ret void } + define void @stack_fold_vaddsubpdrm_vaddsubpdrr_test() #0 { ret void } + define void @stack_fold_vaddsubpsyrm_vaddsubpsyrr_test() #0 { ret void } + define void @stack_fold_vaddsubpsrm_vaddsubpsrr_test() #0 { ret void } + define void @stack_fold_vaesdeclastrm_vaesdeclastrr_test() #0 { ret void } + define void @stack_fold_vaesdecrm_vaesdecrr_test() #0 { ret void } + define void @stack_fold_vaesenclastrm_vaesenclastrr_test() #0 { ret void } + define void @stack_fold_vaesencrm_vaesencrr_test() #0 { ret void } + define void @stack_fold_vandnpdyrm_vandnpdyrr_test() #0 { ret void } + define void @stack_fold_vandnpdrm_vandnpdrr_test() #0 { ret void } + define void @stack_fold_vandnpsyrm_vandnpsyrr_test() #0 { ret void } + define void @stack_fold_vandnpsrm_vandnpsrr_test() #0 { ret void } + define void @stack_fold_vandpdyrm_vandpdyrr_test() #0 { ret void } + define void @stack_fold_vandpdrm_vandpdrr_test() #0 { ret void } + define void @stack_fold_vandpsyrm_vandpsyrr_test() #0 { ret void } + define void @stack_fold_vandpsrm_vandpsrr_test() #0 { ret void } + define void @stack_fold_vblendpdyrmi_vblendpdyrri_test() #0 { ret void } + define void @stack_fold_vblendpdrmi_vblendpdrri_test() #0 { ret void } + define void @stack_fold_vblendpsyrmi_vblendpsyrri_test() #0 { ret void } + define void @stack_fold_vblendpsrmi_vblendpsrri_test() #0 { ret void } + define void @stack_fold_vblendvpdyrm_vblendvpdyrr_test() #0 { ret void } + define void @stack_fold_vblendvpdrm_vblendvpdrr_test() #0 { ret void } + define void @stack_fold_vblendvpsyrm_vblendvpsyrr_test() #0 { ret void } + define void @stack_fold_vblendvpsrm_vblendvpsrr_test() #0 { ret void } + define void @stack_fold_vcmppdyrmi_vcmppdyrri_test() #0 { ret void } + define void @stack_fold_vcmppdyrmi_alt_vcmppdyrri_alt_test() #0 { ret void } + define void @stack_fold_vcmppdrmi_vcmppdrri_test() #0 { ret void } + define void @stack_fold_vcmppdrmi_alt_vcmppdrri_alt_test() #0 { ret void } + define void @stack_fold_vcmppsyrmi_vcmppsyrri_test() #0 { ret void } + define void @stack_fold_vcmppsyrmi_alt_vcmppsyrri_alt_test() #0 { ret void } + define void @stack_fold_vcmppsrmi_vcmppsrri_test() #0 { ret void } + define void @stack_fold_vcmppsrmi_alt_vcmppsrri_alt_test() #0 { ret void } + define void @stack_fold_vcmpsdrm_vcmpsdrr_test() #0 { ret void } + define void @stack_fold_vcmpsdrm_alt_vcmpsdrr_alt_test() #0 { ret void } + define void @stack_fold_vcmpssrm_vcmpssrr_test() #0 { ret void } + define void @stack_fold_vcmpssrm_alt_vcmpssrr_alt_test() #0 { ret void } + define void @stack_fold_vcvtsi2sd64rm_vcvtsi2sd64rr_test() #0 { ret void } + define void @stack_fold_vcvtsi2sdrm_vcvtsi2sdrr_test() #0 { ret void } + define void @stack_fold_vcvtsi2ss64rm_vcvtsi2ss64rr_test() #0 { ret void } + define void @stack_fold_vcvtsi2ssrm_vcvtsi2ssrr_test() #0 { ret void } + define void @stack_fold_vdivpdyrm_vdivpdyrr_test() #0 { ret void } + define void @stack_fold_vdivpdrm_vdivpdrr_test() #0 { ret void } + define void @stack_fold_vdivpsyrm_vdivpsyrr_test() #0 { ret void } + define void @stack_fold_vdivpsrm_vdivpsrr_test() #0 { ret void } + define void @stack_fold_vdivsdrm_vdivsdrr_test() #0 { ret void } + define void @stack_fold_vdivsdrm_int_vdivsdrr_int_test() #0 { ret void } + define void @stack_fold_vdivssrm_vdivssrr_test() #0 { ret void } + define void @stack_fold_vdivssrm_int_vdivssrr_int_test() #0 { ret void } + define void @stack_fold_vdppdrmi_vdppdrri_test() #0 { ret void } + define void @stack_fold_vdppsyrmi_vdppsyrri_test() #0 { ret void } + define void @stack_fold_vdppsrmi_vdppsrri_test() #0 { ret void } + define void @stack_fold_vhaddpdyrm_vhaddpdyrr_test() #0 { ret void } + define void @stack_fold_vhaddpdrm_vhaddpdrr_test() #0 { ret void } + define void @stack_fold_vhaddpsyrm_vhaddpsyrr_test() #0 { ret void } + define void @stack_fold_vhaddpsrm_vhaddpsrr_test() #0 { ret void } + define void @stack_fold_vhsubpdyrm_vhsubpdyrr_test() #0 { ret void } + define void @stack_fold_vhsubpdrm_vhsubpdrr_test() #0 { ret void } + define void @stack_fold_vhsubpsyrm_vhsubpsyrr_test() #0 { ret void } + define void @stack_fold_vhsubpsrm_vhsubpsrr_test() #0 { ret void } + define void @stack_fold_vinsertf128rm_vinsertf128rr_test() #0 { ret void } + define void @stack_fold_vinsertpsrm_vinsertpsrr_test() #0 { ret void } + define void @stack_fold_vmaxcpdyrm_vmaxcpdyrr_test() #0 { ret void } + define void @stack_fold_vmaxcpdrm_vmaxcpdrr_test() #0 { ret void } + define void @stack_fold_vmaxcpsyrm_vmaxcpsyrr_test() #0 { ret void } + define void @stack_fold_vmaxcpsrm_vmaxcpsrr_test() #0 { ret void } + define void @stack_fold_vmaxcsdrm_vmaxcsdrr_test() #0 { ret void } + define void @stack_fold_vmaxcssrm_vmaxcssrr_test() #0 { ret void } + define void @stack_fold_vmaxpdyrm_vmaxpdyrr_test() #0 { ret void } + define void @stack_fold_vmaxpdrm_vmaxpdrr_test() #0 { ret void } + define void @stack_fold_vmaxpsyrm_vmaxpsyrr_test() #0 { ret void } + define void @stack_fold_vmaxpsrm_vmaxpsrr_test() #0 { ret void } + define void @stack_fold_vmaxsdrm_vmaxsdrr_test() #0 { ret void } + define void @stack_fold_vmaxsdrm_int_vmaxsdrr_int_test() #0 { ret void } + define void @stack_fold_vmaxssrm_vmaxssrr_test() #0 { ret void } + define void @stack_fold_vmaxssrm_int_vmaxssrr_int_test() #0 { ret void } + define void @stack_fold_vmincpdyrm_vmincpdyrr_test() #0 { ret void } + define void @stack_fold_vmincpdrm_vmincpdrr_test() #0 { ret void } + define void @stack_fold_vmincpsyrm_vmincpsyrr_test() #0 { ret void } + define void @stack_fold_vmincpsrm_vmincpsrr_test() #0 { ret void } + define void @stack_fold_vmincsdrm_vmincsdrr_test() #0 { ret void } + define void @stack_fold_vmincssrm_vmincssrr_test() #0 { ret void } + define void @stack_fold_vminpdyrm_vminpdyrr_test() #0 { ret void } + define void @stack_fold_vminpdrm_vminpdrr_test() #0 { ret void } + define void @stack_fold_vminpsyrm_vminpsyrr_test() #0 { ret void } + define void @stack_fold_vminpsrm_vminpsrr_test() #0 { ret void } + define void @stack_fold_vminsdrm_vminsdrr_test() #0 { ret void } + define void @stack_fold_vminsdrm_int_vminsdrr_int_test() #0 { ret void } + define void @stack_fold_vminssrm_vminssrr_test() #0 { ret void } + define void @stack_fold_vminssrm_int_vminssrr_int_test() #0 { ret void } + define void @stack_fold_vmovhpsrm_vmovlhpsrr_test() #0 { ret void } + define void @stack_fold_vmovlpsrm_vmovhlpsrr_test() #0 { ret void } + define void @stack_fold_vmpsadbwrmi_vmpsadbwrri_test() #0 { ret void } + define void @stack_fold_vmulpdyrm_vmulpdyrr_test() #0 { ret void } + define void @stack_fold_vmulpdrm_vmulpdrr_test() #0 { ret void } + define void @stack_fold_vmulpsyrm_vmulpsyrr_test() #0 { ret void } + define void @stack_fold_vmulpsrm_vmulpsrr_test() #0 { ret void } + define void @stack_fold_vmulsdrm_vmulsdrr_test() #0 { ret void } + define void @stack_fold_vmulsdrm_int_vmulsdrr_int_test() #0 { ret void } + define void @stack_fold_vmulssrm_vmulssrr_test() #0 { ret void } + define void @stack_fold_vmulssrm_int_vmulssrr_int_test() #0 { ret void } + define void @stack_fold_vorpdyrm_vorpdyrr_test() #0 { ret void } + define void @stack_fold_vorpdrm_vorpdrr_test() #0 { ret void } + define void @stack_fold_vorpsyrm_vorpsyrr_test() #0 { ret void } + define void @stack_fold_vorpsrm_vorpsrr_test() #0 { ret void } + define void @stack_fold_vpackssdwrm_vpackssdwrr_test() #0 { ret void } + define void @stack_fold_vpacksswbrm_vpacksswbrr_test() #0 { ret void } + define void @stack_fold_vpackusdwrm_vpackusdwrr_test() #0 { ret void } + define void @stack_fold_vpackuswbrm_vpackuswbrr_test() #0 { ret void } + define void @stack_fold_vpaddbrm_vpaddbrr_test() #0 { ret void } + define void @stack_fold_vpadddrm_vpadddrr_test() #0 { ret void } + define void @stack_fold_vpaddqrm_vpaddqrr_test() #0 { ret void } + define void @stack_fold_vpaddsbrm_vpaddsbrr_test() #0 { ret void } + define void @stack_fold_vpaddswrm_vpaddswrr_test() #0 { ret void } + define void @stack_fold_vpaddusbrm_vpaddusbrr_test() #0 { ret void } + define void @stack_fold_vpadduswrm_vpadduswrr_test() #0 { ret void } + define void @stack_fold_vpaddwrm_vpaddwrr_test() #0 { ret void } + define void @stack_fold_vpalignrrmi_vpalignrrri_test() #0 { ret void } + define void @stack_fold_vpandnrm_vpandnrr_test() #0 { ret void } + define void @stack_fold_vpandrm_vpandrr_test() #0 { ret void } + define void @stack_fold_vpavgbrm_vpavgbrr_test() #0 { ret void } + define void @stack_fold_vpavgwrm_vpavgwrr_test() #0 { ret void } + define void @stack_fold_vpblendvbrm_vpblendvbrr_test() #0 { ret void } + define void @stack_fold_vpblendwrmi_vpblendwrri_test() #0 { ret void } + define void @stack_fold_vpclmulqdqrm_vpclmulqdqrr_test() #0 { ret void } + define void @stack_fold_vpcmpeqbrm_vpcmpeqbrr_test() #0 { ret void } + define void @stack_fold_vpcmpeqdrm_vpcmpeqdrr_test() #0 { ret void } + define void @stack_fold_vpcmpeqqrm_vpcmpeqqrr_test() #0 { ret void } + define void @stack_fold_vpcmpeqwrm_vpcmpeqwrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtbrm_vpcmpgtbrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtdrm_vpcmpgtdrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtqrm_vpcmpgtqrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtwrm_vpcmpgtwrr_test() #0 { ret void } + define void @stack_fold_vperm2f128rm_vperm2f128rr_test() #0 { ret void } + define void @stack_fold_vpermilpdyrm_vpermilpdyrr_test() #0 { ret void } + define void @stack_fold_vpermilpdrm_vpermilpdrr_test() #0 { ret void } + define void @stack_fold_vpermilpsyrm_vpermilpsyrr_test() #0 { ret void } + define void @stack_fold_vpermilpsrm_vpermilpsrr_test() #0 { ret void } + define void @stack_fold_vphadddrm_vphadddrr_test() #0 { ret void } + define void @stack_fold_vphaddswrm128_vphaddswrr128_test() #0 { ret void } + define void @stack_fold_vphaddwrm_vphaddwrr_test() #0 { ret void } + define void @stack_fold_vphsubdrm_vphsubdrr_test() #0 { ret void } + define void @stack_fold_vphsubswrm128_vphsubswrr128_test() #0 { ret void } + define void @stack_fold_vphsubwrm_vphsubwrr_test() #0 { ret void } + define void @stack_fold_vpinsrbrm_vpinsrbrr_test() #0 { ret void } + define void @stack_fold_vpinsrdrm_vpinsrdrr_test() #0 { ret void } + define void @stack_fold_vpinsrqrm_vpinsrqrr_test() #0 { ret void } + define void @stack_fold_vpinsrwrmi_vpinsrwrri_test() #0 { ret void } + define void @stack_fold_vpmaddubswrm_vpmaddubswrr_test() #0 { ret void } + define void @stack_fold_vpmaddwdrm_vpmaddwdrr_test() #0 { ret void } + define void @stack_fold_vpmaxsbrm_vpmaxsbrr_test() #0 { ret void } + define void @stack_fold_vpmaxsdrm_vpmaxsdrr_test() #0 { ret void } + define void @stack_fold_vpmaxswrm_vpmaxswrr_test() #0 { ret void } + define void @stack_fold_vpmaxubrm_vpmaxubrr_test() #0 { ret void } + define void @stack_fold_vpmaxudrm_vpmaxudrr_test() #0 { ret void } + define void @stack_fold_vpmaxuwrm_vpmaxuwrr_test() #0 { ret void } + define void @stack_fold_vpminsbrm_vpminsbrr_test() #0 { ret void } + define void @stack_fold_vpminsdrm_vpminsdrr_test() #0 { ret void } + define void @stack_fold_vpminswrm_vpminswrr_test() #0 { ret void } + define void @stack_fold_vpminubrm_vpminubrr_test() #0 { ret void } + define void @stack_fold_vpminudrm_vpminudrr_test() #0 { ret void } + define void @stack_fold_vpminuwrm_vpminuwrr_test() #0 { ret void } + define void @stack_fold_vpmuldqrm_vpmuldqrr_test() #0 { ret void } + define void @stack_fold_vpmulhrswrm_vpmulhrswrr_test() #0 { ret void } + define void @stack_fold_vpmulhuwrm_vpmulhuwrr_test() #0 { ret void } + define void @stack_fold_vpmulhwrm_vpmulhwrr_test() #0 { ret void } + define void @stack_fold_vpmulldrm_vpmulldrr_test() #0 { ret void } + define void @stack_fold_vpmullwrm_vpmullwrr_test() #0 { ret void } + define void @stack_fold_vpmuludqrm_vpmuludqrr_test() #0 { ret void } + define void @stack_fold_vporrm_vporrr_test() #0 { ret void } + define void @stack_fold_vpsadbwrm_vpsadbwrr_test() #0 { ret void } + define void @stack_fold_vpshufbrm_vpshufbrr_test() #0 { ret void } + define void @stack_fold_vpsignbrm128_vpsignbrr128_test() #0 { ret void } + define void @stack_fold_vpsigndrm128_vpsigndrr128_test() #0 { ret void } + define void @stack_fold_vpsignwrm128_vpsignwrr128_test() #0 { ret void } + define void @stack_fold_vpslldrm_vpslldrr_test() #0 { ret void } + define void @stack_fold_vpsllqrm_vpsllqrr_test() #0 { ret void } + define void @stack_fold_vpsllwrm_vpsllwrr_test() #0 { ret void } + define void @stack_fold_vpsradrm_vpsradrr_test() #0 { ret void } + define void @stack_fold_vpsrawrm_vpsrawrr_test() #0 { ret void } + define void @stack_fold_vpsrldrm_vpsrldrr_test() #0 { ret void } + define void @stack_fold_vpsrlqrm_vpsrlqrr_test() #0 { ret void } + define void @stack_fold_vpsrlwrm_vpsrlwrr_test() #0 { ret void } + define void @stack_fold_vpsubbrm_vpsubbrr_test() #0 { ret void } + define void @stack_fold_vpsubdrm_vpsubdrr_test() #0 { ret void } + define void @stack_fold_vpsubqrm_vpsubqrr_test() #0 { ret void } + define void @stack_fold_vpsubsbrm_vpsubsbrr_test() #0 { ret void } + define void @stack_fold_vpsubswrm_vpsubswrr_test() #0 { ret void } + define void @stack_fold_vpsubusbrm_vpsubusbrr_test() #0 { ret void } + define void @stack_fold_vpsubuswrm_vpsubuswrr_test() #0 { ret void } + define void @stack_fold_vpsubwrm_vpsubwrr_test() #0 { ret void } + define void @stack_fold_vpunpckhbwrm_vpunpckhbwrr_test() #0 { ret void } + define void @stack_fold_vpunpckhdqrm_vpunpckhdqrr_test() #0 { ret void } + define void @stack_fold_vpunpckhqdqrm_vpunpckhqdqrr_test() #0 { ret void } + define void @stack_fold_vpunpckhwdrm_vpunpckhwdrr_test() #0 { ret void } + define void @stack_fold_vpunpcklbwrm_vpunpcklbwrr_test() #0 { ret void } + define void @stack_fold_vpunpckldqrm_vpunpckldqrr_test() #0 { ret void } + define void @stack_fold_vpunpcklqdqrm_vpunpcklqdqrr_test() #0 { ret void } + define void @stack_fold_vpunpcklwdrm_vpunpcklwdrr_test() #0 { ret void } + define void @stack_fold_vpxorrm_vpxorrr_test() #0 { ret void } + define void @stack_fold_vroundsdm_vroundsdr_test() #0 { ret void } + define void @stack_fold_vroundsdm_int_vroundsdr_int_test() #0 { ret void } + define void @stack_fold_vroundssm_vroundssr_test() #0 { ret void } + define void @stack_fold_vroundssm_int_vroundssr_int_test() #0 { ret void } + define void @stack_fold_vshufpdyrmi_vshufpdyrri_test() #0 { ret void } + define void @stack_fold_vshufpdrmi_vshufpdrri_test() #0 { ret void } + define void @stack_fold_vshufpsyrmi_vshufpsyrri_test() #0 { ret void } + define void @stack_fold_vshufpsrmi_vshufpsrri_test() #0 { ret void } + define void @stack_fold_vsubpdyrm_vsubpdyrr_test() #0 { ret void } + define void @stack_fold_vsubpdrm_vsubpdrr_test() #0 { ret void } + define void @stack_fold_vsubpsyrm_vsubpsyrr_test() #0 { ret void } + define void @stack_fold_vsubpsrm_vsubpsrr_test() #0 { ret void } + define void @stack_fold_vsubsdrm_vsubsdrr_test() #0 { ret void } + define void @stack_fold_vsubsdrm_int_vsubsdrr_int_test() #0 { ret void } + define void @stack_fold_vsubssrm_vsubssrr_test() #0 { ret void } + define void @stack_fold_vsubssrm_int_vsubssrr_int_test() #0 { ret void } + define void @stack_fold_vunpckhpdyrm_vunpckhpdyrr_test() #0 { ret void } + define void @stack_fold_vunpckhpdrm_vunpckhpdrr_test() #0 { ret void } + define void @stack_fold_vunpckhpsyrm_vunpckhpsyrr_test() #0 { ret void } + define void @stack_fold_vunpckhpsrm_vunpckhpsrr_test() #0 { ret void } + define void @stack_fold_vunpcklpdyrm_vunpcklpdyrr_test() #0 { ret void } + define void @stack_fold_vunpcklpdrm_vunpcklpdrr_test() #0 { ret void } + define void @stack_fold_vunpcklpsyrm_vunpcklpsyrr_test() #0 { ret void } + define void @stack_fold_vunpcklpsrm_vunpcklpsrr_test() #0 { ret void } + define void @stack_fold_vxorpdyrm_vxorpdyrr_test() #0 { ret void } + define void @stack_fold_vxorpdrm_vxorpdrr_test() #0 { ret void } + define void @stack_fold_vxorpsyrm_vxorpsyrr_test() #0 { ret void } + define void @stack_fold_vxorpsrm_vxorpsrr_test() #0 { ret void } +... +--- +name: stack_fold_vextractf128mr_vextractf128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextractf128mr_vextractf128rr_test + ; CHECK: VEXTRACTF128mr + %0 = VEXTRACTF128rr undef %ymm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextractpsmr_vextractpsrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextractpsmr_vextractpsrr_test + ; CHECK: VEXTRACTPSmr + %0 = VEXTRACTPSrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovapdymr_vmovapdyrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovapdymr_vmovapdyrr_test + ; CHECK: VMOVAPDYmr + %0 = VMOVAPDYrr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSYmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovapdmr_vmovapdrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovapdmr_vmovapdrr_test + ; CHECK: VMOVAPDmr + %0 = VMOVAPDrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovapsymr_vmovapsyrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovapsymr_vmovapsyrr_test + ; CHECK: VMOVAPSYmr + %0 = VMOVAPSYrr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSYmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovapsmr_vmovapsrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovapsmr_vmovapsrr_test + ; CHECK: VMOVAPSmr + %0 = VMOVAPSrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqaymr_vmovdqayrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqaymr_vmovdqayrr_test + ; CHECK: VMOVDQAYmr + %0 = VMOVDQAYrr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSYmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqamr_vmovdqarr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqamr_vmovdqarr_test + ; CHECK: VMOVDQAmr + %0 = VMOVDQArr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdquymr_vmovdquyrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdquymr_vmovdquyrr_test + ; CHECK: VMOVDQUYmr + %0 = VMOVDQUYrr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSYmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqumr_vmovdqurr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqumr_vmovdqurr_test + ; CHECK: VMOVDQUmr + %0 = VMOVDQUrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovpdi2dimr_vmovpdi2dirr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovpdi2dimr_vmovpdi2dirr_test + ; CHECK: VMOVPDI2DImr + %0 = VMOVPDI2DIrr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovpqi2qimr_vmovpqi2qirr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovpqi2qimr_vmovpqi2qirr_test + ; CHECK: VMOVPQI2QImr + %0 = VMOVPQI2QIrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovpqito64mr_vmovpqito64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovpqito64mr_vmovpqito64rr_test + ; CHECK: VMOVPQIto64mr + %0 = VMOVPQIto64rr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovsdto64mr_vmovsdto64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovsdto64mr_vmovsdto64rr_test + ; CHECK: VMOVSDto64mr + %0 = VMOVSDto64rr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovss2dimr_vmovss2dirr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovss2dimr_vmovss2dirr_test + ; CHECK: VMOVSS2DImr + %0 = VMOVSS2DIrr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovupdymr_vmovupdyrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovupdymr_vmovupdyrr_test + ; CHECK: VMOVUPDYmr + %0 = VMOVUPDYrr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSYmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovupdmr_vmovupdrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovupdmr_vmovupdrr_test + ; CHECK: VMOVUPDmr + %0 = VMOVUPDrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovupsymr_vmovupsyrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovupsymr_vmovupsyrr_test + ; CHECK: VMOVUPSYmr + %0 = VMOVUPSYrr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSYmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovupsmr_vmovupsrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovupsmr_vmovupsrr_test + ; CHECK: VMOVUPSmr + %0 = VMOVUPSrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpextrbmr_vpextrbrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpextrbmr_vpextrbrr_test + ; CHECK: VPEXTRBmr + %0 = VPEXTRBrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpextrdmr_vpextrdrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpextrdmr_vpextrdrr_test + ; CHECK: VPEXTRDmr + %0 = VPEXTRDrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpextrqmr_vpextrqrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpextrqmr_vpextrqrr_test + ; CHECK: VPEXTRQmr + %0 = VPEXTRQrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpextrwmr_vpextrwri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpextrwmr_vpextrwri_test + ; CHECK: VPEXTRWmr + %0 = VPEXTRWri undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_aesimcrm_aesimcrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_aesimcrm_aesimcrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: AESIMCrm + %xmm0 = AESIMCrr %1 + RET 0 +... +--- +name: stack_fold_aeskeygenassist128rm_aeskeygenassist128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_aeskeygenassist128rm_aeskeygenassist128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: AESKEYGENASSIST128rm + %xmm0 = AESKEYGENASSIST128rr %1, 0 + RET 0 +... +--- +name: stack_fold_int_vcomisdrm_int_vcomisdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_vcomisdrm_int_vcomisdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCOMISDrm + Int_VCOMISDrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_int_vcomissrm_int_vcomissrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_vcomissrm_int_vcomissrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCOMISSrm + Int_VCOMISSrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_int_vcvttsd2si64rm_int_vcvttsd2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_int_vcvttsd2si64rm_int_vcvttsd2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCVTTSD2SI64rm + %rax = Int_VCVTTSD2SI64rr %1 + RET 0 +... +--- +name: stack_fold_int_vcvttsd2sirm_int_vcvttsd2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_int_vcvttsd2sirm_int_vcvttsd2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCVTTSD2SIrm + %eax = Int_VCVTTSD2SIrr %1 + RET 0 +... +--- +name: stack_fold_int_vcvttss2si64rm_int_vcvttss2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_int_vcvttss2si64rm_int_vcvttss2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCVTTSS2SI64rm + %rax = Int_VCVTTSS2SI64rr %1 + RET 0 +... +--- +name: stack_fold_int_vcvttss2sirm_int_vcvttss2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_int_vcvttss2sirm_int_vcvttss2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCVTTSS2SIrm + %eax = Int_VCVTTSS2SIrr %1 + RET 0 +... +--- +name: stack_fold_int_vucomisdrm_int_vucomisdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_vucomisdrm_int_vucomisdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VUCOMISDrm + Int_VUCOMISDrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_int_vucomissrm_int_vucomissrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_vucomissrm_int_vucomissrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VUCOMISSrm + Int_VUCOMISSrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vaesimcrm_vaesimcrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vaesimcrm_vaesimcrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VAESIMCrm + %xmm0 = VAESIMCrr %1 + RET 0 +... +--- +name: stack_fold_vaeskeygenassist128rm_vaeskeygenassist128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vaeskeygenassist128rm_vaeskeygenassist128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VAESKEYGENASSIST128rm + %xmm0 = VAESKEYGENASSIST128rr %1, 0 + RET 0 +... +--- +name: stack_fold_vcomisdrm_vcomisdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcomisdrm_vcomisdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCOMISDrm + VCOMISDrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vcomissrm_vcomissrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcomissrm_vcomissrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCOMISSrm + VCOMISSrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vcvtdq2pdyrm_vcvtdq2pdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pdyrm_vcvtdq2pdyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PDYrm + %ymm0 = VCVTDQ2PDYrr %1 + RET 0 +... +--- +name: stack_fold_vcvtdq2pdrm_vcvtdq2pdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pdrm_vcvtdq2pdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PDrm + %xmm0 = VCVTDQ2PDrr %1 + RET 0 +... +--- +name: stack_fold_vcvtdq2psyrm_vcvtdq2psyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2psyrm_vcvtdq2psyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PSYrm + %ymm0 = VCVTDQ2PSYrr %1 + RET 0 +... +--- +name: stack_fold_vcvtdq2psrm_vcvtdq2psrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2psrm_vcvtdq2psrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PSrm + %xmm0 = VCVTDQ2PSrr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2dqyrm_vcvtpd2dqyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2dqyrm_vcvtpd2dqyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2DQYrm + %xmm0 = VCVTPD2DQYrr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2dqrm_vcvtpd2dqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2dqrm_vcvtpd2dqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2DQrm + %xmm0 = VCVTPD2DQrr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2psyrm_vcvtpd2psyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2psyrm_vcvtpd2psyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2PSYrm + %xmm0 = VCVTPD2PSYrr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2psrm_vcvtpd2psrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2psrm_vcvtpd2psrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2PSrm + %xmm0 = VCVTPD2PSrr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2dqyrm_vcvtps2dqyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2dqyrm_vcvtps2dqyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2DQYrm + %ymm0 = VCVTPS2DQYrr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2dqrm_vcvtps2dqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2dqrm_vcvtps2dqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2DQrm + %xmm0 = VCVTPS2DQrr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2pdyrm_vcvtps2pdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdyrm_vcvtps2pdyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDYrm + %ymm0 = VCVTPS2PDYrr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2pdrm_vcvtps2pdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdrm_vcvtps2pdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDrm + %xmm0 = VCVTPS2PDrr %1 + RET 0 +... +--- +name: stack_fold_vcvtsd2si64rm_vcvtsd2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtsd2si64rm_vcvtsd2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSD2SI64rm + %rax = VCVTSD2SI64rr %1 + RET 0 +... +--- +name: stack_fold_vcvtsd2sirm_vcvtsd2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtsd2sirm_vcvtsd2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSD2SIrm + %eax = VCVTSD2SIrr %1 + RET 0 +... +--- +name: stack_fold_vcvtss2si64rm_vcvtss2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtss2si64rm_vcvtss2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSS2SI64rm + %rax = VCVTSS2SI64rr %1 + RET 0 +... +--- +name: stack_fold_vcvtss2sirm_vcvtss2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtss2sirm_vcvtss2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSS2SIrm + %eax = VCVTSS2SIrr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqyrm_vcvttpd2dqyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqyrm_vcvttpd2dqyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQYrm + %xmm0 = VCVTTPD2DQYrr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqrm_vcvttpd2dqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqrm_vcvttpd2dqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQrm + %xmm0 = VCVTTPD2DQrr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2dqyrm_vcvttps2dqyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqyrm_vcvttps2dqyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQYrm + %ymm0 = VCVTTPS2DQYrr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2dqrm_vcvttps2dqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqrm_vcvttps2dqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQrm + %xmm0 = VCVTTPS2DQrr %1 + RET 0 +... +--- +name: stack_fold_vcvttsd2si64rm_vcvttsd2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttsd2si64rm_vcvttsd2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSD2SI64rm + %rax = VCVTTSD2SI64rr %1 + RET 0 +... +--- +name: stack_fold_vcvttsd2sirm_vcvttsd2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttsd2sirm_vcvttsd2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSD2SIrm + %eax = VCVTTSD2SIrr %1 + RET 0 +... +--- +name: stack_fold_vcvttss2si64rm_vcvttss2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttss2si64rm_vcvttss2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSS2SI64rm + %rax = VCVTTSS2SI64rr %1 + RET 0 +... +--- +name: stack_fold_vcvttss2sirm_vcvttss2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttss2sirm_vcvttss2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSS2SIrm + %eax = VCVTTSS2SIrr %1 + RET 0 +... +--- +name: stack_fold_vmov64topqirm_vmov64topqirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vmov64topqirm_vmov64topqirr_test + %1 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VMOV64toPQIrm + %xmm0 = VMOV64toPQIrr %1 + RET 0 +... +--- +name: stack_fold_vmovapdyrm_vmovapdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovapdyrm_vmovapdyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPDYrm + %ymm0 = VMOVAPDYrr %1 + RET 0 +... +--- +name: stack_fold_vmovapdrm_vmovapdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovapdrm_vmovapdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPDrm + %xmm0 = VMOVAPDrr %1 + RET 0 +... +--- +name: stack_fold_vmovapsyrm_vmovapsyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovapsyrm_vmovapsyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPSYrm + %ymm0 = VMOVAPSYrr %1 + RET 0 +... +--- +name: stack_fold_vmovapsrm_vmovapsrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovapsrm_vmovapsrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPSrm + %xmm0 = VMOVAPSrr %1 + RET 0 +... +--- +name: stack_fold_vmovddupyrm_vmovddupyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovddupyrm_vmovddupyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDDUPYrm + %ymm0 = VMOVDDUPYrr %1 + RET 0 +... +--- +name: stack_fold_vmovdduprm_vmovdduprr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdduprm_vmovdduprr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDDUPrm + %xmm0 = VMOVDDUPrr %1 + RET 0 +... +--- +name: stack_fold_vmovdi2pdirm_vmovdi2pdirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vmovdi2pdirm_vmovdi2pdirr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VMOVDI2PDIrm + %xmm0 = VMOVDI2PDIrr %1 + RET 0 +... +--- +name: stack_fold_vmovdi2ssrm_vmovdi2ssrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vmovdi2ssrm_vmovdi2ssrr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VMOVDI2SSrm + %xmm0 = VMOVDI2SSrr %1 + RET 0 +... +--- +name: stack_fold_vmovdqayrm_vmovdqayrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqayrm_vmovdqayrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQAYrm + %ymm0 = VMOVDQAYrr %1 + RET 0 +... +--- +name: stack_fold_vmovdqarm_vmovdqarr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqarm_vmovdqarr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQArm + %xmm0 = VMOVDQArr %1 + RET 0 +... +--- +name: stack_fold_vmovdquyrm_vmovdquyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdquyrm_vmovdquyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQUYrm + %ymm0 = VMOVDQUYrr %1 + RET 0 +... +--- +name: stack_fold_vmovdqurm_vmovdqurr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqurm_vmovdqurr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQUrm + %xmm0 = VMOVDQUrr %1 + RET 0 +... +--- +name: stack_fold_vmovqi2pqirm_vmovzpqilo2pqirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovqi2pqirm_vmovzpqilo2pqirr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVQI2PQIrm + %xmm0 = VMOVZPQILo2PQIrr %1 + RET 0 +... +--- +name: stack_fold_vmovshdupyrm_vmovshdupyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovshdupyrm_vmovshdupyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSHDUPYrm + %ymm0 = VMOVSHDUPYrr %1 + RET 0 +... +--- +name: stack_fold_vmovshduprm_vmovshduprr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovshduprm_vmovshduprr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSHDUPrm + %xmm0 = VMOVSHDUPrr %1 + RET 0 +... +--- +name: stack_fold_vmovsldupyrm_vmovsldupyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovsldupyrm_vmovsldupyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSLDUPYrm + %ymm0 = VMOVSLDUPYrr %1 + RET 0 +... +--- +name: stack_fold_vmovslduprm_vmovslduprr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovslduprm_vmovslduprr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSLDUPrm + %xmm0 = VMOVSLDUPrr %1 + RET 0 +... +--- +name: stack_fold_vmovupdyrm_vmovupdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovupdyrm_vmovupdyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPDYrm + %ymm0 = VMOVUPDYrr %1 + RET 0 +... +--- +name: stack_fold_vmovupdrm_vmovupdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovupdrm_vmovupdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPDrm + %xmm0 = VMOVUPDrr %1 + RET 0 +... +--- +name: stack_fold_vmovupsyrm_vmovupsyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovupsyrm_vmovupsyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPSYrm + %ymm0 = VMOVUPSYrr %1 + RET 0 +... +--- +name: stack_fold_vmovupsrm_vmovupsrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovupsrm_vmovupsrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPSrm + %xmm0 = VMOVUPSrr %1 + RET 0 +... +--- +name: stack_fold_vpabsbrm_vpabsbrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsbrm_vpabsbrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSBrm + %xmm0 = VPABSBrr %1 + RET 0 +... +--- +name: stack_fold_vpabsdrm_vpabsdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsdrm_vpabsdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSDrm + %xmm0 = VPABSDrr %1 + RET 0 +... +--- +name: stack_fold_vpabswrm_vpabswrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpabswrm_vpabswrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSWrm + %xmm0 = VPABSWrr %1 + RET 0 +... +--- +name: stack_fold_vpcmpestrirm_vpcmpestrirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpestrirm_vpcmpestrirr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPESTRIrm + VPCMPESTRIrr undef %xmm0, %1, 0, implicit-def %ecx, implicit-def %eflags, implicit undef %eax, implicit undef %edx + RET 0 +... +--- +name: stack_fold_vpcmpestrm128rm_vpcmpestrm128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpestrm128rm_vpcmpestrm128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPESTRM128rm + VPCMPESTRM128rr undef %xmm0, %1, 0, implicit-def %xmm0, implicit-def %eflags, implicit undef %eax, implicit undef %edx + RET 0 +... +--- +name: stack_fold_vpcmpistrirm_vpcmpistrirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpistrirm_vpcmpistrirr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPISTRIrm + VPCMPISTRIrr undef %xmm0, %1, 0, implicit-def %ecx, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vpcmpistrm128rm_vpcmpistrm128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpistrm128rm_vpcmpistrm128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPISTRM128rm + VPCMPISTRM128rr undef %xmm0, %1, 0, implicit-def %xmm0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vpermilpdymi_vpermilpdyri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpdymi_vpermilpdyri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDYmi + %ymm0 = VPERMILPDYri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermilpdmi_vpermilpdri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpdmi_vpermilpdri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDmi + %xmm0 = VPERMILPDri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermilpsymi_vpermilpsyri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpsymi_vpermilpsyri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSYmi + %ymm0 = VPERMILPSYri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermilpsmi_vpermilpsri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpsmi_vpermilpsri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSmi + %xmm0 = VPERMILPSri %1, 0 + RET 0 +... +--- +name: stack_fold_vphminposuwrm128_vphminposuwrr128_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphminposuwrm128_vphminposuwrr128_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHMINPOSUWrm128 + %xmm0 = VPHMINPOSUWrr128 %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbdrm_vpmovsxbdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbdrm_vpmovsxbdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBDrm + %xmm0 = VPMOVSXBDrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbqrm_vpmovsxbqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbqrm_vpmovsxbqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBQrm + %xmm0 = VPMOVSXBQrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbwrm_vpmovsxbwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbwrm_vpmovsxbwrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBWrm + %xmm0 = VPMOVSXBWrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxdqrm_vpmovsxdqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxdqrm_vpmovsxdqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXDQrm + %xmm0 = VPMOVSXDQrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxwdrm_vpmovsxwdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwdrm_vpmovsxwdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWDrm + %xmm0 = VPMOVSXWDrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxwqrm_vpmovsxwqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwqrm_vpmovsxwqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWQrm + %xmm0 = VPMOVSXWQrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbdrm_vpmovzxbdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbdrm_vpmovzxbdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBDrm + %xmm0 = VPMOVZXBDrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbqrm_vpmovzxbqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbqrm_vpmovzxbqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBQrm + %xmm0 = VPMOVZXBQrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbwrm_vpmovzxbwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbwrm_vpmovzxbwrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBWrm + %xmm0 = VPMOVZXBWrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxdqrm_vpmovzxdqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxdqrm_vpmovzxdqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXDQrm + %xmm0 = VPMOVZXDQrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxwdrm_vpmovzxwdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwdrm_vpmovzxwdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWDrm + %xmm0 = VPMOVZXWDrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxwqrm_vpmovzxwqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwqrm_vpmovzxwqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWQrm + %xmm0 = VPMOVZXWQrr %1 + RET 0 +... +--- +name: stack_fold_vpshufdmi_vpshufdri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshufdmi_vpshufdri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFDmi + %xmm0 = VPSHUFDri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshufhwmi_vpshufhwri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshufhwmi_vpshufhwri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFHWmi + %xmm0 = VPSHUFHWri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshuflwmi_vpshuflwri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshuflwmi_vpshuflwri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFLWmi + %xmm0 = VPSHUFLWri %1, 0 + RET 0 +... +--- +name: stack_fold_vptestyrm_vptestyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestyrm_vptestyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTYrm + VPTESTYrr undef %ymm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vptestrm_vptestrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestrm_vptestrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTrm + VPTESTrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vrcppsym_vrcppsyr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrcppsym_vrcppsyr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCPPSYm + %ymm0 = VRCPPSYr %1 + RET 0 +... +--- +name: stack_fold_vrcppsm_vrcppsr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrcppsm_vrcppsr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCPPSm + %xmm0 = VRCPPSr %1 + RET 0 +... +--- +name: stack_fold_vroundpdm_vroundpdr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vroundpdm_vroundpdr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VROUNDPDm + %xmm0 = VROUNDPDr %1, 0 + RET 0 +... +--- +name: stack_fold_vroundpsm_vroundpsr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vroundpsm_vroundpsr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VROUNDPSm + %xmm0 = VROUNDPSr %1, 0 + RET 0 +... +--- +name: stack_fold_vroundypdm_vroundypdr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vroundypdm_vroundypdr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VROUNDYPDm + %ymm0 = VROUNDYPDr %1, 0 + RET 0 +... +--- +name: stack_fold_vroundypsm_vroundypsr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vroundypsm_vroundypsr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VROUNDYPSm + %ymm0 = VROUNDYPSr %1, 0 + RET 0 +... +--- +name: stack_fold_vrsqrtpsym_vrsqrtpsyr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrtpsym_vrsqrtpsyr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRTPSYm + %ymm0 = VRSQRTPSYr %1 + RET 0 +... +--- +name: stack_fold_vrsqrtpsm_vrsqrtpsr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrtpsm_vrsqrtpsr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRTPSm + %xmm0 = VRSQRTPSr %1 + RET 0 +... +--- +name: stack_fold_vsqrtpdym_vsqrtpdyr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpdym_vsqrtpdyr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPDYm + %ymm0 = VSQRTPDYr %1 + RET 0 +... +--- +name: stack_fold_vsqrtpdm_vsqrtpdr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpdm_vsqrtpdr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPDm + %xmm0 = VSQRTPDr %1 + RET 0 +... +--- +name: stack_fold_vsqrtpsym_vsqrtpsyr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpsym_vsqrtpsyr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPSYm + %ymm0 = VSQRTPSYr %1 + RET 0 +... +--- +name: stack_fold_vsqrtpsm_vsqrtpsr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpsm_vsqrtpsr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPSm + %xmm0 = VSQRTPSr %1 + RET 0 +... +--- +name: stack_fold_vtestpdyrm_vtestpdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vtestpdyrm_vtestpdyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VTESTPDYrm + VTESTPDYrr undef %ymm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vtestpdrm_vtestpdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vtestpdrm_vtestpdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VTESTPDrm + VTESTPDrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vtestpsyrm_vtestpsyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vtestpsyrm_vtestpsyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VTESTPSYrm + VTESTPSYrr undef %ymm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vtestpsrm_vtestpsrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vtestpsrm_vtestpsrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VTESTPSrm + VTESTPSrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vucomisdrm_vucomisdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vucomisdrm_vucomisdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUCOMISDrm + VUCOMISDrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vucomissrm_vucomissrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vucomissrm_vucomissrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUCOMISSrm + VUCOMISSrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_aesdeclastrm_aesdeclastrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_aesdeclastrm_aesdeclastrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: AESDECLASTrm + %xmm0 = AESDECLASTrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_aesdecrm_aesdecrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_aesdecrm_aesdecrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: AESDECrm + %xmm0 = AESDECrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_aesenclastrm_aesenclastrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_aesenclastrm_aesenclastrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: AESENCLASTrm + %xmm0 = AESENCLASTrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_aesencrm_aesencrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_aesencrm_aesencrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: AESENCrm + %xmm0 = AESENCrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_int_vcmpsdrm_int_vcmpsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_int_vcmpsdrm_int_vcmpsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCMPSDrm + %xmm0 = Int_VCMPSDrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_int_vcmpssrm_int_vcmpssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_int_vcmpssrm_int_vcmpssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCMPSSrm + %xmm0 = Int_VCMPSSrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_int_vcvtsd2ssrm_int_vcvtsd2ssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_int_vcvtsd2ssrm_int_vcvtsd2ssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCVTSD2SSrm + %xmm0 = Int_VCVTSD2SSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_int_vcvtsi2sd64rm_int_vcvtsi2sd64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_int_vcvtsi2sd64rm_int_vcvtsi2sd64rr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: Int_VCVTSI2SD64rm + %xmm0 = Int_VCVTSI2SD64rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_int_vcvtsi2sdrm_int_vcvtsi2sdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_int_vcvtsi2sdrm_int_vcvtsi2sdrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: Int_VCVTSI2SDrm + %xmm0 = Int_VCVTSI2SDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_int_vcvtsi2ss64rm_int_vcvtsi2ss64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_int_vcvtsi2ss64rm_int_vcvtsi2ss64rr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: Int_VCVTSI2SS64rm + %xmm0 = Int_VCVTSI2SS64rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_int_vcvtsi2ssrm_int_vcvtsi2ssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_int_vcvtsi2ssrm_int_vcvtsi2ssrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: Int_VCVTSI2SSrm + %xmm0 = Int_VCVTSI2SSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_int_vcvtss2sdrm_int_vcvtss2sdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_int_vcvtss2sdrm_int_vcvtss2sdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCVTSS2SDrm + %xmm0 = Int_VCVTSS2SDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pclmulqdqrm_pclmulqdqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pclmulqdqrm_pclmulqdqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCLMULQDQrm + %xmm0 = PCLMULQDQrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vaddpdyrm_vaddpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vaddpdyrm_vaddpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPDYrm + %ymm0 = VADDPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vaddpdrm_vaddpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddpdrm_vaddpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPDrm + %xmm0 = VADDPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddpsyrm_vaddpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vaddpsyrm_vaddpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPSYrm + %ymm0 = VADDPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vaddpsrm_vaddpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddpsrm_vaddpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPSrm + %xmm0 = VADDPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddsdrm_vaddsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddsdrm_vaddsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSDrm + %xmm0 = VADDSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddsdrm_int_vaddsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddsdrm_int_vaddsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSDrm_Int + %xmm0 = VADDSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddssrm_vaddssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddssrm_vaddssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSSrm + %xmm0 = VADDSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddssrm_int_vaddssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddssrm_int_vaddssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSSrm_Int + %xmm0 = VADDSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddsubpdyrm_vaddsubpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vaddsubpdyrm_vaddsubpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSUBPDYrm + %ymm0 = VADDSUBPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vaddsubpdrm_vaddsubpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddsubpdrm_vaddsubpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSUBPDrm + %xmm0 = VADDSUBPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddsubpsyrm_vaddsubpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vaddsubpsyrm_vaddsubpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSUBPSYrm + %ymm0 = VADDSUBPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vaddsubpsrm_vaddsubpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddsubpsrm_vaddsubpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSUBPSrm + %xmm0 = VADDSUBPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaesdeclastrm_vaesdeclastrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaesdeclastrm_vaesdeclastrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VAESDECLASTrm + %xmm0 = VAESDECLASTrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaesdecrm_vaesdecrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaesdecrm_vaesdecrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VAESDECrm + %xmm0 = VAESDECrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaesenclastrm_vaesenclastrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaesenclastrm_vaesenclastrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VAESENCLASTrm + %xmm0 = VAESENCLASTrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaesencrm_vaesencrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaesencrm_vaesencrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VAESENCrm + %xmm0 = VAESENCrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vandnpdyrm_vandnpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandnpdyrm_vandnpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPDYrm + %ymm0 = VANDNPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vandnpdrm_vandnpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandnpdrm_vandnpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPDrm + %xmm0 = VANDNPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vandnpsyrm_vandnpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandnpsyrm_vandnpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPSYrm + %ymm0 = VANDNPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vandnpsrm_vandnpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandnpsrm_vandnpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPSrm + %xmm0 = VANDNPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vandpdyrm_vandpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandpdyrm_vandpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPDYrm + %ymm0 = VANDPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vandpdrm_vandpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandpdrm_vandpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPDrm + %xmm0 = VANDPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vandpsyrm_vandpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandpsyrm_vandpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPSYrm + %ymm0 = VANDPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vandpsrm_vandpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandpsrm_vandpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPSrm + %xmm0 = VANDPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vblendpdyrmi_vblendpdyrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vblendpdyrmi_vblendpdyrri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDPDYrmi + %ymm0 = VBLENDPDYrri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vblendpdrmi_vblendpdrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vblendpdrmi_vblendpdrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDPDrmi + %xmm0 = VBLENDPDrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vblendpsyrmi_vblendpsyrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vblendpsyrmi_vblendpsyrri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDPSYrmi + %ymm0 = VBLENDPSYrri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vblendpsrmi_vblendpsrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vblendpsrmi_vblendpsrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDPSrmi + %xmm0 = VBLENDPSrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vblendvpdyrm_vblendvpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vblendvpdyrm_vblendvpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDVPDYrm + %ymm0 = VBLENDVPDYrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vblendvpdrm_vblendvpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vblendvpdrm_vblendvpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDVPDrm + %xmm0 = VBLENDVPDrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vblendvpsyrm_vblendvpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vblendvpsyrm_vblendvpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDVPSYrm + %ymm0 = VBLENDVPSYrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vblendvpsrm_vblendvpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vblendvpsrm_vblendvpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDVPSrm + %xmm0 = VBLENDVPSrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vcmppdyrmi_vcmppdyrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcmppdyrmi_vcmppdyrri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDYrmi + %ymm0 = VCMPPDYrri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppdyrmi_alt_vcmppdyrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcmppdyrmi_alt_vcmppdyrri_alt_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDYrmi_alt + %ymm0 = VCMPPDYrri_alt undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppdrmi_vcmppdrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcmppdrmi_vcmppdrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDrmi + %xmm0 = VCMPPDrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppdrmi_alt_vcmppdrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcmppdrmi_alt_vcmppdrri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDrmi_alt + %xmm0 = VCMPPDrri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppsyrmi_vcmppsyrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcmppsyrmi_vcmppsyrri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSYrmi + %ymm0 = VCMPPSYrri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppsyrmi_alt_vcmppsyrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcmppsyrmi_alt_vcmppsyrri_alt_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSYrmi_alt + %ymm0 = VCMPPSYrri_alt undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppsrmi_vcmppsrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcmppsrmi_vcmppsrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSrmi + %xmm0 = VCMPPSrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppsrmi_alt_vcmppsrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcmppsrmi_alt_vcmppsrri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSrmi_alt + %xmm0 = VCMPPSrri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmpsdrm_vcmpsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcmpsdrm_vcmpsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSDrm + %xmm0 = VCMPSDrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmpsdrm_alt_vcmpsdrr_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcmpsdrm_alt_vcmpsdrr_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSDrm_alt + %xmm0 = VCMPSDrr_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmpssrm_vcmpssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcmpssrm_vcmpssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSSrm + %xmm0 = VCMPSSrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmpssrm_alt_vcmpssrr_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcmpssrm_alt_vcmpssrr_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSSrm_alt + %xmm0 = VCMPSSrr_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vcvtsi2sd64rm_vcvtsi2sd64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vcvtsi2sd64rm_vcvtsi2sd64rr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI2SD64rm + %xmm0 = VCVTSI2SD64rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtsi2sdrm_vcvtsi2sdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vcvtsi2sdrm_vcvtsi2sdrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI2SDrm + %xmm0 = VCVTSI2SDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtsi2ss64rm_vcvtsi2ss64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vcvtsi2ss64rm_vcvtsi2ss64rr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI2SS64rm + %xmm0 = VCVTSI2SS64rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtsi2ssrm_vcvtsi2ssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vcvtsi2ssrm_vcvtsi2ssrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI2SSrm + %xmm0 = VCVTSI2SSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivpdyrm_vdivpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vdivpdyrm_vdivpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPDYrm + %ymm0 = VDIVPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vdivpdrm_vdivpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivpdrm_vdivpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPDrm + %xmm0 = VDIVPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivpsyrm_vdivpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vdivpsyrm_vdivpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPSYrm + %ymm0 = VDIVPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vdivpsrm_vdivpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivpsrm_vdivpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPSrm + %xmm0 = VDIVPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivsdrm_vdivsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivsdrm_vdivsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSDrm + %xmm0 = VDIVSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivsdrm_int_vdivsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivsdrm_int_vdivsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSDrm_Int + %xmm0 = VDIVSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivssrm_vdivssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivssrm_vdivssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSSrm + %xmm0 = VDIVSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivssrm_int_vdivssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivssrm_int_vdivssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSSrm_Int + %xmm0 = VDIVSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdppdrmi_vdppdrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdppdrmi_vdppdrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDPPDrmi + %xmm0 = VDPPDrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vdppsyrmi_vdppsyrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vdppsyrmi_vdppsyrri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDPPSYrmi + %ymm0 = VDPPSYrri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vdppsrmi_vdppsrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdppsrmi_vdppsrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDPPSrmi + %xmm0 = VDPPSrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vhaddpdyrm_vhaddpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vhaddpdyrm_vhaddpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VHADDPDYrm + %ymm0 = VHADDPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vhaddpdrm_vhaddpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vhaddpdrm_vhaddpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VHADDPDrm + %xmm0 = VHADDPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vhaddpsyrm_vhaddpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vhaddpsyrm_vhaddpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VHADDPSYrm + %ymm0 = VHADDPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vhaddpsrm_vhaddpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vhaddpsrm_vhaddpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VHADDPSrm + %xmm0 = VHADDPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vhsubpdyrm_vhsubpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vhsubpdyrm_vhsubpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VHSUBPDYrm + %ymm0 = VHSUBPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vhsubpdrm_vhsubpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vhsubpdrm_vhsubpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VHSUBPDrm + %xmm0 = VHSUBPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vhsubpsyrm_vhsubpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vhsubpsyrm_vhsubpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VHSUBPSYrm + %ymm0 = VHSUBPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vhsubpsrm_vhsubpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vhsubpsrm_vhsubpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VHSUBPSrm + %xmm0 = VHSUBPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vinsertf128rm_vinsertf128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf128rm_vinsertf128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF128rm + %ymm0 = VINSERTF128rr undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinsertpsrm_vinsertpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinsertpsrm_vinsertpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTPSrm + %xmm0 = VINSERTPSrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vmaxcpdyrm_vmaxcpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdyrm_vmaxcpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDYrm + %ymm0 = VMAXCPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcpdrm_vmaxcpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdrm_vmaxcpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDrm + %xmm0 = VMAXCPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcpsyrm_vmaxcpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpsyrm_vmaxcpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSYrm + %ymm0 = VMAXCPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcpsrm_vmaxcpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpsrm_vmaxcpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSrm + %xmm0 = VMAXCPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcsdrm_vmaxcsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcsdrm_vmaxcsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCSDrm + %xmm0 = VMAXCSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcssrm_vmaxcssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcssrm_vmaxcssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCSSrm + %xmm0 = VMAXCSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxpdyrm_vmaxpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpdyrm_vmaxpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPDYrm + %ymm0 = VMAXPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxpdrm_vmaxpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpdrm_vmaxpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPDrm + %xmm0 = VMAXPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxpsyrm_vmaxpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpsyrm_vmaxpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPSYrm + %ymm0 = VMAXPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxpsrm_vmaxpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpsrm_vmaxpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPSrm + %xmm0 = VMAXPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxsdrm_vmaxsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxsdrm_vmaxsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSDrm + %xmm0 = VMAXSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxsdrm_int_vmaxsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxsdrm_int_vmaxsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSDrm_Int + %xmm0 = VMAXSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxssrm_vmaxssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxssrm_vmaxssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSSrm + %xmm0 = VMAXSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxssrm_int_vmaxssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxssrm_int_vmaxssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSSrm_Int + %xmm0 = VMAXSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpdyrm_vmincpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmincpdyrm_vmincpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDYrm + %ymm0 = VMINCPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpdrm_vmincpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpdrm_vmincpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDrm + %xmm0 = VMINCPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpsyrm_vmincpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmincpsyrm_vmincpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSYrm + %ymm0 = VMINCPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpsrm_vmincpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpsrm_vmincpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSrm + %xmm0 = VMINCPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincsdrm_vmincsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmincsdrm_vmincsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCSDrm + %xmm0 = VMINCSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincssrm_vmincssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmincssrm_vmincssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCSSrm + %xmm0 = VMINCSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminpdyrm_vminpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vminpdyrm_vminpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPDYrm + %ymm0 = VMINPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vminpdrm_vminpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminpdrm_vminpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPDrm + %xmm0 = VMINPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminpsyrm_vminpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vminpsyrm_vminpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPSYrm + %ymm0 = VMINPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vminpsrm_vminpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminpsrm_vminpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPSrm + %xmm0 = VMINPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminsdrm_vminsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminsdrm_vminsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSDrm + %xmm0 = VMINSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminsdrm_int_vminsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminsdrm_int_vminsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSDrm_Int + %xmm0 = VMINSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminssrm_vminssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminssrm_vminssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSSrm + %xmm0 = VMINSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminssrm_int_vminssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminssrm_int_vminssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSSrm_Int + %xmm0 = VMINSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmovhpsrm_vmovlhpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovhpsrm_vmovlhpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVHPSrm + %xmm0 = VMOVLHPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmovlpsrm_vmovhlpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovlpsrm_vmovhlpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVLPSrm + %xmm0 = VMOVHLPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmpsadbwrmi_vmpsadbwrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmpsadbwrmi_vmpsadbwrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMPSADBWrmi + %xmm0 = VMPSADBWrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vmulpdyrm_vmulpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmulpdyrm_vmulpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPDYrm + %ymm0 = VMULPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmulpdrm_vmulpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulpdrm_vmulpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPDrm + %xmm0 = VMULPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulpsyrm_vmulpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmulpsyrm_vmulpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPSYrm + %ymm0 = VMULPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmulpsrm_vmulpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulpsrm_vmulpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPSrm + %xmm0 = VMULPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulsdrm_vmulsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulsdrm_vmulsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSDrm + %xmm0 = VMULSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulsdrm_int_vmulsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulsdrm_int_vmulsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSDrm_Int + %xmm0 = VMULSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulssrm_vmulssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulssrm_vmulssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSSrm + %xmm0 = VMULSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulssrm_int_vmulssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulssrm_int_vmulssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSSrm_Int + %xmm0 = VMULSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vorpdyrm_vorpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vorpdyrm_vorpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPDYrm + %ymm0 = VORPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vorpdrm_vorpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vorpdrm_vorpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPDrm + %xmm0 = VORPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vorpsyrm_vorpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vorpsyrm_vorpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPSYrm + %ymm0 = VORPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vorpsrm_vorpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vorpsrm_vorpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPSrm + %xmm0 = VORPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpackssdwrm_vpackssdwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpackssdwrm_vpackssdwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSDWrm + %xmm0 = VPACKSSDWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpacksswbrm_vpacksswbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpacksswbrm_vpacksswbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSWBrm + %xmm0 = VPACKSSWBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpackusdwrm_vpackusdwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpackusdwrm_vpackusdwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSDWrm + %xmm0 = VPACKUSDWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpackuswbrm_vpackuswbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpackuswbrm_vpackuswbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSWBrm + %xmm0 = VPACKUSWBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddbrm_vpaddbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddbrm_vpaddbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDBrm + %xmm0 = VPADDBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpadddrm_vpadddrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpadddrm_vpadddrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDDrm + %xmm0 = VPADDDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddqrm_vpaddqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddqrm_vpaddqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDQrm + %xmm0 = VPADDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddsbrm_vpaddsbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddsbrm_vpaddsbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSBrm + %xmm0 = VPADDSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddswrm_vpaddswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddswrm_vpaddswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSWrm + %xmm0 = VPADDSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddusbrm_vpaddusbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddusbrm_vpaddusbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSBrm + %xmm0 = VPADDUSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpadduswrm_vpadduswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpadduswrm_vpadduswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSWrm + %xmm0 = VPADDUSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddwrm_vpaddwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddwrm_vpaddwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDWrm + %xmm0 = VPADDWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpalignrrmi_vpalignrrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpalignrrmi_vpalignrrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPALIGNRrmi + %xmm0 = VPALIGNRrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpandnrm_vpandnrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpandnrm_vpandnrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNrm + %xmm0 = VPANDNrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpandrm_vpandrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpandrm_vpandrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDrm + %xmm0 = VPANDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpavgbrm_vpavgbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpavgbrm_vpavgbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGBrm + %xmm0 = VPAVGBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpavgwrm_vpavgwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpavgwrm_vpavgwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGWrm + %xmm0 = VPAVGWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendvbrm_vpblendvbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendvbrm_vpblendvbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDVBrm + %xmm0 = VPBLENDVBrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpblendwrmi_vpblendwrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendwrmi_vpblendwrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDWrmi + %xmm0 = VPBLENDWrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpclmulqdqrm_vpclmulqdqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpclmulqdqrm_vpclmulqdqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCLMULQDQrm + %xmm0 = VPCLMULQDQrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpeqbrm_vpcmpeqbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqbrm_vpcmpeqbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQBrm + %xmm0 = VPCMPEQBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqdrm_vpcmpeqdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqdrm_vpcmpeqdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQDrm + %xmm0 = VPCMPEQDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqqrm_vpcmpeqqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqqrm_vpcmpeqqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQQrm + %xmm0 = VPCMPEQQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqwrm_vpcmpeqwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqwrm_vpcmpeqwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQWrm + %xmm0 = VPCMPEQWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtbrm_vpcmpgtbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtbrm_vpcmpgtbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTBrm + %xmm0 = VPCMPGTBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtdrm_vpcmpgtdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtdrm_vpcmpgtdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTDrm + %xmm0 = VPCMPGTDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtqrm_vpcmpgtqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtqrm_vpcmpgtqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTQrm + %xmm0 = VPCMPGTQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtwrm_vpcmpgtwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtwrm_vpcmpgtwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTWrm + %xmm0 = VPCMPGTWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vperm2f128rm_vperm2f128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vperm2f128rm_vperm2f128rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERM2F128rm + %ymm0 = VPERM2F128rr undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermilpdyrm_vpermilpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpdyrm_vpermilpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDYrm + %ymm0 = VPERMILPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpermilpdrm_vpermilpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpdrm_vpermilpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDrm + %xmm0 = VPERMILPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpermilpsyrm_vpermilpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpsyrm_vpermilpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSYrm + %ymm0 = VPERMILPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpermilpsrm_vpermilpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpsrm_vpermilpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSrm + %xmm0 = VPERMILPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vphadddrm_vphadddrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vphadddrm_vphadddrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDDrm + %xmm0 = VPHADDDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vphaddswrm128_vphaddswrr128_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vphaddswrm128_vphaddswrr128_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDSWrm128 + %xmm0 = VPHADDSWrr128 undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vphaddwrm_vphaddwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vphaddwrm_vphaddwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDWrm + %xmm0 = VPHADDWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vphsubdrm_vphsubdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vphsubdrm_vphsubdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHSUBDrm + %xmm0 = VPHSUBDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vphsubswrm128_vphsubswrr128_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vphsubswrm128_vphsubswrr128_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHSUBSWrm128 + %xmm0 = VPHSUBSWrr128 undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vphsubwrm_vphsubwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vphsubwrm_vphsubwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHSUBWrm + %xmm0 = VPHSUBWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpinsrbrm_vpinsrbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vpinsrbrm_vpinsrbrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VPINSRBrm + %xmm0 = VPINSRBrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpinsrdrm_vpinsrdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vpinsrdrm_vpinsrdrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VPINSRDrm + %xmm0 = VPINSRDrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpinsrqrm_vpinsrqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vpinsrqrm_vpinsrqrr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VPINSRQrm + %xmm0 = VPINSRQrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpinsrwrmi_vpinsrwrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vpinsrwrmi_vpinsrwrri_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VPINSRWrmi + %xmm0 = VPINSRWrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpmaddubswrm_vpmaddubswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddubswrm_vpmaddubswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDUBSWrm + %xmm0 = VPMADDUBSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaddwdrm_vpmaddwdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddwdrm_vpmaddwdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDWDrm + %xmm0 = VPMADDWDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsbrm_vpmaxsbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsbrm_vpmaxsbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSBrm + %xmm0 = VPMAXSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsdrm_vpmaxsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsdrm_vpmaxsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSDrm + %xmm0 = VPMAXSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxswrm_vpmaxswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxswrm_vpmaxswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSWrm + %xmm0 = VPMAXSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxubrm_vpmaxubrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxubrm_vpmaxubrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUBrm + %xmm0 = VPMAXUBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxudrm_vpmaxudrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxudrm_vpmaxudrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUDrm + %xmm0 = VPMAXUDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxuwrm_vpmaxuwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuwrm_vpmaxuwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUWrm + %xmm0 = VPMAXUWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsbrm_vpminsbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsbrm_vpminsbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSBrm + %xmm0 = VPMINSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsdrm_vpminsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsdrm_vpminsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSDrm + %xmm0 = VPMINSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminswrm_vpminswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminswrm_vpminswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSWrm + %xmm0 = VPMINSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminubrm_vpminubrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminubrm_vpminubrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUBrm + %xmm0 = VPMINUBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminudrm_vpminudrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminudrm_vpminudrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUDrm + %xmm0 = VPMINUDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminuwrm_vpminuwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminuwrm_vpminuwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUWrm + %xmm0 = VPMINUWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmuldqrm_vpmuldqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmuldqrm_vpmuldqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULDQrm + %xmm0 = VPMULDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhrswrm_vpmulhrswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhrswrm_vpmulhrswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHRSWrm + %xmm0 = VPMULHRSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhuwrm_vpmulhuwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhuwrm_vpmulhuwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHUWrm + %xmm0 = VPMULHUWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhwrm_vpmulhwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhwrm_vpmulhwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHWrm + %xmm0 = VPMULHWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulldrm_vpmulldrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulldrm_vpmulldrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLDrm + %xmm0 = VPMULLDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmullwrm_vpmullwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmullwrm_vpmullwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLWrm + %xmm0 = VPMULLWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmuludqrm_vpmuludqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmuludqrm_vpmuludqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULUDQrm + %xmm0 = VPMULUDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vporrm_vporrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vporrm_vporrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORrm + %xmm0 = VPORrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsadbwrm_vpsadbwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsadbwrm_vpsadbwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSADBWrm + %xmm0 = VPSADBWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshufbrm_vpshufbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshufbrm_vpshufbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFBrm + %xmm0 = VPSHUFBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsignbrm128_vpsignbrr128_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsignbrm128_vpsignbrr128_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSIGNBrm128 + %xmm0 = VPSIGNBrr128 undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsigndrm128_vpsigndrr128_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsigndrm128_vpsigndrr128_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSIGNDrm128 + %xmm0 = VPSIGNDrr128 undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsignwrm128_vpsignwrr128_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsignwrm128_vpsignwrr128_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSIGNWrm128 + %xmm0 = VPSIGNWrr128 undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpslldrm_vpslldrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpslldrm_vpslldrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDrm + %xmm0 = VPSLLDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllqrm_vpsllqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllqrm_vpsllqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQrm + %xmm0 = VPSLLQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllwrm_vpsllwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllwrm_vpsllwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWrm + %xmm0 = VPSLLWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsradrm_vpsradrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsradrm_vpsradrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADrm + %xmm0 = VPSRADrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrawrm_vpsrawrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrawrm_vpsrawrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWrm + %xmm0 = VPSRAWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrldrm_vpsrldrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrldrm_vpsrldrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDrm + %xmm0 = VPSRLDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlqrm_vpsrlqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlqrm_vpsrlqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQrm + %xmm0 = VPSRLQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlwrm_vpsrlwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlwrm_vpsrlwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWrm + %xmm0 = VPSRLWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubbrm_vpsubbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubbrm_vpsubbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBBrm + %xmm0 = VPSUBBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubdrm_vpsubdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubdrm_vpsubdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBDrm + %xmm0 = VPSUBDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubqrm_vpsubqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubqrm_vpsubqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBQrm + %xmm0 = VPSUBQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubsbrm_vpsubsbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubsbrm_vpsubsbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSBrm + %xmm0 = VPSUBSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubswrm_vpsubswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubswrm_vpsubswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSWrm + %xmm0 = VPSUBSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubusbrm_vpsubusbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubusbrm_vpsubusbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSBrm + %xmm0 = VPSUBUSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubuswrm_vpsubuswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubuswrm_vpsubuswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSWrm + %xmm0 = VPSUBUSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubwrm_vpsubwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubwrm_vpsubwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBWrm + %xmm0 = VPSUBWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhbwrm_vpunpckhbwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhbwrm_vpunpckhbwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHBWrm + %xmm0 = VPUNPCKHBWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhdqrm_vpunpckhdqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhdqrm_vpunpckhdqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHDQrm + %xmm0 = VPUNPCKHDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhqdqrm_vpunpckhqdqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhqdqrm_vpunpckhqdqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHQDQrm + %xmm0 = VPUNPCKHQDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhwdrm_vpunpckhwdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhwdrm_vpunpckhwdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHWDrm + %xmm0 = VPUNPCKHWDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklbwrm_vpunpcklbwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklbwrm_vpunpcklbwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLBWrm + %xmm0 = VPUNPCKLBWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckldqrm_vpunpckldqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckldqrm_vpunpckldqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLDQrm + %xmm0 = VPUNPCKLDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklqdqrm_vpunpcklqdqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklqdqrm_vpunpcklqdqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLQDQrm + %xmm0 = VPUNPCKLQDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklwdrm_vpunpcklwdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklwdrm_vpunpcklwdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLWDrm + %xmm0 = VPUNPCKLWDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpxorrm_vpxorrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpxorrm_vpxorrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORrm + %xmm0 = VPXORrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vroundsdm_vroundsdr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vroundsdm_vroundsdr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VROUNDSDm + %xmm0 = VROUNDSDr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vroundsdm_int_vroundsdr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vroundsdm_int_vroundsdr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VROUNDSDm_Int + %xmm0 = VROUNDSDr_Int undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vroundssm_vroundssr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vroundssm_vroundssr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VROUNDSSm + %xmm0 = VROUNDSSr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vroundssm_int_vroundssr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vroundssm_int_vroundssr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VROUNDSSm_Int + %xmm0 = VROUNDSSr_Int undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufpdyrmi_vshufpdyrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshufpdyrmi_vshufpdyrri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPDYrmi + %ymm0 = VSHUFPDYrri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufpdrmi_vshufpdrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vshufpdrmi_vshufpdrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPDrmi + %xmm0 = VSHUFPDrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufpsyrmi_vshufpsyrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshufpsyrmi_vshufpsyrri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPSYrmi + %ymm0 = VSHUFPSYrri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufpsrmi_vshufpsrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vshufpsrmi_vshufpsrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPSrmi + %xmm0 = VSHUFPSrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vsubpdyrm_vsubpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vsubpdyrm_vsubpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPDYrm + %ymm0 = VSUBPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vsubpdrm_vsubpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubpdrm_vsubpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPDrm + %xmm0 = VSUBPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubpsyrm_vsubpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vsubpsyrm_vsubpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPSYrm + %ymm0 = VSUBPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vsubpsrm_vsubpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubpsrm_vsubpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPSrm + %xmm0 = VSUBPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubsdrm_vsubsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubsdrm_vsubsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSDrm + %xmm0 = VSUBSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubsdrm_int_vsubsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubsdrm_int_vsubsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSDrm_Int + %xmm0 = VSUBSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubssrm_vsubssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubssrm_vsubssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSSrm + %xmm0 = VSUBSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubssrm_int_vsubssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubssrm_int_vsubssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSSrm_Int + %xmm0 = VSUBSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpckhpdyrm_vunpckhpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpdyrm_vunpckhpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPDYrm + %ymm0 = VUNPCKHPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vunpckhpdrm_vunpckhpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpdrm_vunpckhpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPDrm + %xmm0 = VUNPCKHPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpckhpsyrm_vunpckhpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpsyrm_vunpckhpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPSYrm + %ymm0 = VUNPCKHPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vunpckhpsrm_vunpckhpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpsrm_vunpckhpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPSrm + %xmm0 = VUNPCKHPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpcklpdyrm_vunpcklpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpdyrm_vunpcklpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPDYrm + %ymm0 = VUNPCKLPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vunpcklpdrm_vunpcklpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpdrm_vunpcklpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPDrm + %xmm0 = VUNPCKLPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpcklpsyrm_vunpcklpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpsyrm_vunpcklpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPSYrm + %ymm0 = VUNPCKLPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vunpcklpsrm_vunpcklpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpsrm_vunpcklpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPSrm + %xmm0 = VUNPCKLPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vxorpdyrm_vxorpdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vxorpdyrm_vxorpdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPDYrm + %ymm0 = VXORPDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vxorpdrm_vxorpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vxorpdrm_vxorpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPDrm + %xmm0 = VXORPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vxorpsyrm_vxorpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vxorpsyrm_vxorpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPSYrm + %ymm0 = VXORPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vxorpsrm_vxorpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vxorpsrm_vxorpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPSrm + %xmm0 = VXORPSrr undef %xmm1, %2 + RET 0 +... Index: test/CodeGen/X86/memoryFolding-avx2.mir =================================================================== --- test/CodeGen/X86/memoryFolding-avx2.mir +++ test/CodeGen/X86/memoryFolding-avx2.mir @@ -0,0 +1,2552 @@ +# RUN: llc -run-pass greedy -stack-alignment=64 -o - %s | FileCheck %s +# Stack alignment set to 64 to enable folding of aligned mov instructions. +--- | + attributes #0 = { "target-features" = "+avx2" } + define void @stack_fold_vextracti128mr_vextracti128rr_test() #0 { ret void } + define void @stack_fold_vbroadcastsdyrm_vbroadcastsdyrr_test() #0 { ret void } + define void @stack_fold_vbroadcastssyrm_vbroadcastssyrr_test() #0 { ret void } + define void @stack_fold_vbroadcastssrm_vbroadcastssrr_test() #0 { ret void } + define void @stack_fold_vpabsbyrm_vpabsbyrr_test() #0 { ret void } + define void @stack_fold_vpabsdyrm_vpabsdyrr_test() #0 { ret void } + define void @stack_fold_vpabswyrm_vpabswyrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastbyrm_vpbroadcastbyrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastbrm_vpbroadcastbrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastdyrm_vpbroadcastdyrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastdrm_vpbroadcastdrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastqyrm_vpbroadcastqyrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastqrm_vpbroadcastqrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastwyrm_vpbroadcastwyrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastwrm_vpbroadcastwrr_test() #0 { ret void } + define void @stack_fold_vpermpdymi_vpermpdyri_test() #0 { ret void } + define void @stack_fold_vpermqymi_vpermqyri_test() #0 { ret void } + define void @stack_fold_vpmovsxbdyrm_vpmovsxbdyrr_test() #0 { ret void } + define void @stack_fold_vpmovsxbqyrm_vpmovsxbqyrr_test() #0 { ret void } + define void @stack_fold_vpmovsxbwyrm_vpmovsxbwyrr_test() #0 { ret void } + define void @stack_fold_vpmovsxdqyrm_vpmovsxdqyrr_test() #0 { ret void } + define void @stack_fold_vpmovsxwdyrm_vpmovsxwdyrr_test() #0 { ret void } + define void @stack_fold_vpmovsxwqyrm_vpmovsxwqyrr_test() #0 { ret void } + define void @stack_fold_vpmovzxbdyrm_vpmovzxbdyrr_test() #0 { ret void } + define void @stack_fold_vpmovzxbqyrm_vpmovzxbqyrr_test() #0 { ret void } + define void @stack_fold_vpmovzxbwyrm_vpmovzxbwyrr_test() #0 { ret void } + define void @stack_fold_vpmovzxdqyrm_vpmovzxdqyrr_test() #0 { ret void } + define void @stack_fold_vpmovzxwdyrm_vpmovzxwdyrr_test() #0 { ret void } + define void @stack_fold_vpmovzxwqyrm_vpmovzxwqyrr_test() #0 { ret void } + define void @stack_fold_vpshufdymi_vpshufdyri_test() #0 { ret void } + define void @stack_fold_vpshufhwymi_vpshufhwyri_test() #0 { ret void } + define void @stack_fold_vpshuflwymi_vpshuflwyri_test() #0 { ret void } + define void @stack_fold_vinserti128rm_vinserti128rr_test() #0 { ret void } + define void @stack_fold_vmpsadbwyrmi_vmpsadbwyrri_test() #0 { ret void } + define void @stack_fold_vpackssdwyrm_vpackssdwyrr_test() #0 { ret void } + define void @stack_fold_vpacksswbyrm_vpacksswbyrr_test() #0 { ret void } + define void @stack_fold_vpackusdwyrm_vpackusdwyrr_test() #0 { ret void } + define void @stack_fold_vpackuswbyrm_vpackuswbyrr_test() #0 { ret void } + define void @stack_fold_vpaddbyrm_vpaddbyrr_test() #0 { ret void } + define void @stack_fold_vpadddyrm_vpadddyrr_test() #0 { ret void } + define void @stack_fold_vpaddqyrm_vpaddqyrr_test() #0 { ret void } + define void @stack_fold_vpaddsbyrm_vpaddsbyrr_test() #0 { ret void } + define void @stack_fold_vpaddswyrm_vpaddswyrr_test() #0 { ret void } + define void @stack_fold_vpaddusbyrm_vpaddusbyrr_test() #0 { ret void } + define void @stack_fold_vpadduswyrm_vpadduswyrr_test() #0 { ret void } + define void @stack_fold_vpaddwyrm_vpaddwyrr_test() #0 { ret void } + define void @stack_fold_vpalignryrmi_vpalignryrri_test() #0 { ret void } + define void @stack_fold_vpandnyrm_vpandnyrr_test() #0 { ret void } + define void @stack_fold_vpandyrm_vpandyrr_test() #0 { ret void } + define void @stack_fold_vpavgbyrm_vpavgbyrr_test() #0 { ret void } + define void @stack_fold_vpavgwyrm_vpavgwyrr_test() #0 { ret void } + define void @stack_fold_vpblenddyrmi_vpblenddyrri_test() #0 { ret void } + define void @stack_fold_vpblenddrmi_vpblenddrri_test() #0 { ret void } + define void @stack_fold_vpblendvbyrm_vpblendvbyrr_test() #0 { ret void } + define void @stack_fold_vpblendwyrmi_vpblendwyrri_test() #0 { ret void } + define void @stack_fold_vpcmpeqbyrm_vpcmpeqbyrr_test() #0 { ret void } + define void @stack_fold_vpcmpeqdyrm_vpcmpeqdyrr_test() #0 { ret void } + define void @stack_fold_vpcmpeqqyrm_vpcmpeqqyrr_test() #0 { ret void } + define void @stack_fold_vpcmpeqwyrm_vpcmpeqwyrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtbyrm_vpcmpgtbyrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtdyrm_vpcmpgtdyrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtqyrm_vpcmpgtqyrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtwyrm_vpcmpgtwyrr_test() #0 { ret void } + define void @stack_fold_vperm2i128rm_vperm2i128rr_test() #0 { ret void } + define void @stack_fold_vpermdyrm_vpermdyrr_test() #0 { ret void } + define void @stack_fold_vpermpsyrm_vpermpsyrr_test() #0 { ret void } + define void @stack_fold_vphadddyrm_vphadddyrr_test() #0 { ret void } + define void @stack_fold_vphaddswrm256_vphaddswrr256_test() #0 { ret void } + define void @stack_fold_vphaddwyrm_vphaddwyrr_test() #0 { ret void } + define void @stack_fold_vphsubdyrm_vphsubdyrr_test() #0 { ret void } + define void @stack_fold_vphsubswrm256_vphsubswrr256_test() #0 { ret void } + define void @stack_fold_vphsubwyrm_vphsubwyrr_test() #0 { ret void } + define void @stack_fold_vpmaddubswyrm_vpmaddubswyrr_test() #0 { ret void } + define void @stack_fold_vpmaddwdyrm_vpmaddwdyrr_test() #0 { ret void } + define void @stack_fold_vpmaxsbyrm_vpmaxsbyrr_test() #0 { ret void } + define void @stack_fold_vpmaxsdyrm_vpmaxsdyrr_test() #0 { ret void } + define void @stack_fold_vpmaxswyrm_vpmaxswyrr_test() #0 { ret void } + define void @stack_fold_vpmaxubyrm_vpmaxubyrr_test() #0 { ret void } + define void @stack_fold_vpmaxudyrm_vpmaxudyrr_test() #0 { ret void } + define void @stack_fold_vpmaxuwyrm_vpmaxuwyrr_test() #0 { ret void } + define void @stack_fold_vpminsbyrm_vpminsbyrr_test() #0 { ret void } + define void @stack_fold_vpminsdyrm_vpminsdyrr_test() #0 { ret void } + define void @stack_fold_vpminswyrm_vpminswyrr_test() #0 { ret void } + define void @stack_fold_vpminubyrm_vpminubyrr_test() #0 { ret void } + define void @stack_fold_vpminudyrm_vpminudyrr_test() #0 { ret void } + define void @stack_fold_vpminuwyrm_vpminuwyrr_test() #0 { ret void } + define void @stack_fold_vpmuldqyrm_vpmuldqyrr_test() #0 { ret void } + define void @stack_fold_vpmulhrswyrm_vpmulhrswyrr_test() #0 { ret void } + define void @stack_fold_vpmulhuwyrm_vpmulhuwyrr_test() #0 { ret void } + define void @stack_fold_vpmulhwyrm_vpmulhwyrr_test() #0 { ret void } + define void @stack_fold_vpmulldyrm_vpmulldyrr_test() #0 { ret void } + define void @stack_fold_vpmullwyrm_vpmullwyrr_test() #0 { ret void } + define void @stack_fold_vpmuludqyrm_vpmuludqyrr_test() #0 { ret void } + define void @stack_fold_vporyrm_vporyrr_test() #0 { ret void } + define void @stack_fold_vpsadbwyrm_vpsadbwyrr_test() #0 { ret void } + define void @stack_fold_vpshufbyrm_vpshufbyrr_test() #0 { ret void } + define void @stack_fold_vpsignbyrm256_vpsignbyrr256_test() #0 { ret void } + define void @stack_fold_vpsigndyrm256_vpsigndyrr256_test() #0 { ret void } + define void @stack_fold_vpsignwyrm256_vpsignwyrr256_test() #0 { ret void } + define void @stack_fold_vpslldyrm_vpslldyrr_test() #0 { ret void } + define void @stack_fold_vpsllqyrm_vpsllqyrr_test() #0 { ret void } + define void @stack_fold_vpsllvdyrm_vpsllvdyrr_test() #0 { ret void } + define void @stack_fold_vpsllvdrm_vpsllvdrr_test() #0 { ret void } + define void @stack_fold_vpsllvqyrm_vpsllvqyrr_test() #0 { ret void } + define void @stack_fold_vpsllvqrm_vpsllvqrr_test() #0 { ret void } + define void @stack_fold_vpsllwyrm_vpsllwyrr_test() #0 { ret void } + define void @stack_fold_vpsradyrm_vpsradyrr_test() #0 { ret void } + define void @stack_fold_vpsravdyrm_vpsravdyrr_test() #0 { ret void } + define void @stack_fold_vpsravdrm_vpsravdrr_test() #0 { ret void } + define void @stack_fold_vpsrawyrm_vpsrawyrr_test() #0 { ret void } + define void @stack_fold_vpsrldyrm_vpsrldyrr_test() #0 { ret void } + define void @stack_fold_vpsrlqyrm_vpsrlqyrr_test() #0 { ret void } + define void @stack_fold_vpsrlvdyrm_vpsrlvdyrr_test() #0 { ret void } + define void @stack_fold_vpsrlvdrm_vpsrlvdrr_test() #0 { ret void } + define void @stack_fold_vpsrlvqyrm_vpsrlvqyrr_test() #0 { ret void } + define void @stack_fold_vpsrlvqrm_vpsrlvqrr_test() #0 { ret void } + define void @stack_fold_vpsrlwyrm_vpsrlwyrr_test() #0 { ret void } + define void @stack_fold_vpsubbyrm_vpsubbyrr_test() #0 { ret void } + define void @stack_fold_vpsubdyrm_vpsubdyrr_test() #0 { ret void } + define void @stack_fold_vpsubqyrm_vpsubqyrr_test() #0 { ret void } + define void @stack_fold_vpsubsbyrm_vpsubsbyrr_test() #0 { ret void } + define void @stack_fold_vpsubswyrm_vpsubswyrr_test() #0 { ret void } + define void @stack_fold_vpsubusbyrm_vpsubusbyrr_test() #0 { ret void } + define void @stack_fold_vpsubuswyrm_vpsubuswyrr_test() #0 { ret void } + define void @stack_fold_vpsubwyrm_vpsubwyrr_test() #0 { ret void } + define void @stack_fold_vpunpckhbwyrm_vpunpckhbwyrr_test() #0 { ret void } + define void @stack_fold_vpunpckhdqyrm_vpunpckhdqyrr_test() #0 { ret void } + define void @stack_fold_vpunpckhqdqyrm_vpunpckhqdqyrr_test() #0 { ret void } + define void @stack_fold_vpunpckhwdyrm_vpunpckhwdyrr_test() #0 { ret void } + define void @stack_fold_vpunpcklbwyrm_vpunpcklbwyrr_test() #0 { ret void } + define void @stack_fold_vpunpckldqyrm_vpunpckldqyrr_test() #0 { ret void } + define void @stack_fold_vpunpcklqdqyrm_vpunpcklqdqyrr_test() #0 { ret void } + define void @stack_fold_vpunpcklwdyrm_vpunpcklwdyrr_test() #0 { ret void } + define void @stack_fold_vpxoryrm_vpxoryrr_test() #0 { ret void } +... +--- +name: stack_fold_vextracti128mr_vextracti128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextracti128mr_vextracti128rr_test + ; CHECK: VEXTRACTI128mr + %0 = VEXTRACTI128rr undef %ymm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vbroadcastsdyrm_vbroadcastsdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastsdyrm_vbroadcastsdyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSDYrm + %ymm0 = VBROADCASTSDYrr %1 + RET 0 +... +--- +name: stack_fold_vbroadcastssyrm_vbroadcastssyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastssyrm_vbroadcastssyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSSYrm + %ymm0 = VBROADCASTSSYrr %1 + RET 0 +... +--- +name: stack_fold_vbroadcastssrm_vbroadcastssrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastssrm_vbroadcastssrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSSrm + %xmm0 = VBROADCASTSSrr %1 + RET 0 +... +--- +name: stack_fold_vpabsbyrm_vpabsbyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpabsbyrm_vpabsbyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSBYrm + %ymm0 = VPABSBYrr %1 + RET 0 +... +--- +name: stack_fold_vpabsdyrm_vpabsdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpabsdyrm_vpabsdyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSDYrm + %ymm0 = VPABSDYrr %1 + RET 0 +... +--- +name: stack_fold_vpabswyrm_vpabswyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpabswyrm_vpabswyrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSWYrm + %ymm0 = VPABSWYrr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastbyrm_vpbroadcastbyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastbyrm_vpbroadcastbyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTBYrm + %ymm0 = VPBROADCASTBYrr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastbrm_vpbroadcastbrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastbrm_vpbroadcastbrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTBrm + %xmm0 = VPBROADCASTBrr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastdyrm_vpbroadcastdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastdyrm_vpbroadcastdyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTDYrm + %ymm0 = VPBROADCASTDYrr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastdrm_vpbroadcastdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastdrm_vpbroadcastdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTDrm + %xmm0 = VPBROADCASTDrr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastqyrm_vpbroadcastqyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastqyrm_vpbroadcastqyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTQYrm + %ymm0 = VPBROADCASTQYrr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastqrm_vpbroadcastqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastqrm_vpbroadcastqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTQrm + %xmm0 = VPBROADCASTQrr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastwyrm_vpbroadcastwyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastwyrm_vpbroadcastwyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTWYrm + %ymm0 = VPBROADCASTWYrr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastwrm_vpbroadcastwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastwrm_vpbroadcastwrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTWrm + %xmm0 = VPBROADCASTWrr %1 + RET 0 +... +--- +name: stack_fold_vpermpdymi_vpermpdyri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermpdymi_vpermpdyri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDYmi + %ymm0 = VPERMPDYri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermqymi_vpermqyri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermqymi_vpermqyri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQYmi + %ymm0 = VPERMQYri %1, 0 + RET 0 +... +--- +name: stack_fold_vpmovsxbdyrm_vpmovsxbdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbdyrm_vpmovsxbdyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBDYrm + %ymm0 = VPMOVSXBDYrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbqyrm_vpmovsxbqyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbqyrm_vpmovsxbqyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBQYrm + %ymm0 = VPMOVSXBQYrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbwyrm_vpmovsxbwyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbwyrm_vpmovsxbwyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBWYrm + %ymm0 = VPMOVSXBWYrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxdqyrm_vpmovsxdqyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxdqyrm_vpmovsxdqyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXDQYrm + %ymm0 = VPMOVSXDQYrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxwdyrm_vpmovsxwdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwdyrm_vpmovsxwdyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWDYrm + %ymm0 = VPMOVSXWDYrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxwqyrm_vpmovsxwqyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwqyrm_vpmovsxwqyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWQYrm + %ymm0 = VPMOVSXWQYrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbdyrm_vpmovzxbdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbdyrm_vpmovzxbdyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBDYrm + %ymm0 = VPMOVZXBDYrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbqyrm_vpmovzxbqyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbqyrm_vpmovzxbqyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBQYrm + %ymm0 = VPMOVZXBQYrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbwyrm_vpmovzxbwyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbwyrm_vpmovzxbwyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBWYrm + %ymm0 = VPMOVZXBWYrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxdqyrm_vpmovzxdqyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxdqyrm_vpmovzxdqyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXDQYrm + %ymm0 = VPMOVZXDQYrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxwdyrm_vpmovzxwdyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwdyrm_vpmovzxwdyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWDYrm + %ymm0 = VPMOVZXWDYrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxwqyrm_vpmovzxwqyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwqyrm_vpmovzxwqyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWQYrm + %ymm0 = VPMOVZXWQYrr %1 + RET 0 +... +--- +name: stack_fold_vpshufdymi_vpshufdyri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpshufdymi_vpshufdyri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFDYmi + %ymm0 = VPSHUFDYri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshufhwymi_vpshufhwyri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpshufhwymi_vpshufhwyri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFHWYmi + %ymm0 = VPSHUFHWYri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshuflwymi_vpshuflwyri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpshuflwymi_vpshuflwyri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFLWYmi + %ymm0 = VPSHUFLWYri %1, 0 + RET 0 +... +--- +name: stack_fold_vinserti128rm_vinserti128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinserti128rm_vinserti128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI128rm + %ymm0 = VINSERTI128rr undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vmpsadbwyrmi_vmpsadbwyrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmpsadbwyrmi_vmpsadbwyrri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMPSADBWYrmi + %ymm0 = VMPSADBWYrri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpackssdwyrm_vpackssdwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpackssdwyrm_vpackssdwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSDWYrm + %ymm0 = VPACKSSDWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpacksswbyrm_vpacksswbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpacksswbyrm_vpacksswbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSWBYrm + %ymm0 = VPACKSSWBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpackusdwyrm_vpackusdwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpackusdwyrm_vpackusdwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSDWYrm + %ymm0 = VPACKUSDWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpackuswbyrm_vpackuswbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpackuswbyrm_vpackuswbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSWBYrm + %ymm0 = VPACKUSWBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddbyrm_vpaddbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddbyrm_vpaddbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDBYrm + %ymm0 = VPADDBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpadddyrm_vpadddyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpadddyrm_vpadddyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDDYrm + %ymm0 = VPADDDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddqyrm_vpaddqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddqyrm_vpaddqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDQYrm + %ymm0 = VPADDQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddsbyrm_vpaddsbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddsbyrm_vpaddsbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSBYrm + %ymm0 = VPADDSBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddswyrm_vpaddswyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddswyrm_vpaddswyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSWYrm + %ymm0 = VPADDSWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddusbyrm_vpaddusbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddusbyrm_vpaddusbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSBYrm + %ymm0 = VPADDUSBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpadduswyrm_vpadduswyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpadduswyrm_vpadduswyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSWYrm + %ymm0 = VPADDUSWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddwyrm_vpaddwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddwyrm_vpaddwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDWYrm + %ymm0 = VPADDWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpalignryrmi_vpalignryrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpalignryrmi_vpalignryrri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPALIGNRYrmi + %ymm0 = VPALIGNRYrri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpandnyrm_vpandnyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpandnyrm_vpandnyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNYrm + %ymm0 = VPANDNYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpandyrm_vpandyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpandyrm_vpandyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDYrm + %ymm0 = VPANDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpavgbyrm_vpavgbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpavgbyrm_vpavgbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGBYrm + %ymm0 = VPAVGBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpavgwyrm_vpavgwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpavgwyrm_vpavgwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGWYrm + %ymm0 = VPAVGWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpblenddyrmi_vpblenddyrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblenddyrmi_vpblenddyrri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDDYrmi + %ymm0 = VPBLENDDYrri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpblenddrmi_vpblenddrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblenddrmi_vpblenddrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDDrmi + %xmm0 = VPBLENDDrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpblendvbyrm_vpblendvbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendvbyrm_vpblendvbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDVBYrm + %ymm0 = VPBLENDVBYrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vpblendwyrmi_vpblendwyrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendwyrmi_vpblendwyrri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDWYrmi + %ymm0 = VPBLENDWYrri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpeqbyrm_vpcmpeqbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqbyrm_vpcmpeqbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQBYrm + %ymm0 = VPCMPEQBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqdyrm_vpcmpeqdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqdyrm_vpcmpeqdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQDYrm + %ymm0 = VPCMPEQDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqqyrm_vpcmpeqqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqqyrm_vpcmpeqqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQQYrm + %ymm0 = VPCMPEQQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqwyrm_vpcmpeqwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqwyrm_vpcmpeqwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQWYrm + %ymm0 = VPCMPEQWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtbyrm_vpcmpgtbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtbyrm_vpcmpgtbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTBYrm + %ymm0 = VPCMPGTBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtdyrm_vpcmpgtdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtdyrm_vpcmpgtdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTDYrm + %ymm0 = VPCMPGTDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtqyrm_vpcmpgtqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtqyrm_vpcmpgtqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTQYrm + %ymm0 = VPCMPGTQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtwyrm_vpcmpgtwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtwyrm_vpcmpgtwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTWYrm + %ymm0 = VPCMPGTWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vperm2i128rm_vperm2i128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vperm2i128rm_vperm2i128rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERM2I128rm + %ymm0 = VPERM2I128rr undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermdyrm_vpermdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermdyrm_vpermdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMDYrm + %ymm0 = VPERMDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpermpsyrm_vpermpsyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermpsyrm_vpermpsyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPSYrm + %ymm0 = VPERMPSYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vphadddyrm_vphadddyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vphadddyrm_vphadddyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDDYrm + %ymm0 = VPHADDDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vphaddswrm256_vphaddswrr256_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vphaddswrm256_vphaddswrr256_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDSWrm256 + %ymm0 = VPHADDSWrr256 undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vphaddwyrm_vphaddwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vphaddwyrm_vphaddwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDWYrm + %ymm0 = VPHADDWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vphsubdyrm_vphsubdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vphsubdyrm_vphsubdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHSUBDYrm + %ymm0 = VPHSUBDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vphsubswrm256_vphsubswrr256_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vphsubswrm256_vphsubswrr256_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHSUBSWrm256 + %ymm0 = VPHSUBSWrr256 undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vphsubwyrm_vphsubwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vphsubwyrm_vphsubwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHSUBWYrm + %ymm0 = VPHSUBWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaddubswyrm_vpmaddubswyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddubswyrm_vpmaddubswyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDUBSWYrm + %ymm0 = VPMADDUBSWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaddwdyrm_vpmaddwdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddwdyrm_vpmaddwdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDWDYrm + %ymm0 = VPMADDWDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsbyrm_vpmaxsbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsbyrm_vpmaxsbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSBYrm + %ymm0 = VPMAXSBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsdyrm_vpmaxsdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsdyrm_vpmaxsdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSDYrm + %ymm0 = VPMAXSDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxswyrm_vpmaxswyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxswyrm_vpmaxswyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSWYrm + %ymm0 = VPMAXSWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxubyrm_vpmaxubyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxubyrm_vpmaxubyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUBYrm + %ymm0 = VPMAXUBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxudyrm_vpmaxudyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxudyrm_vpmaxudyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUDYrm + %ymm0 = VPMAXUDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxuwyrm_vpmaxuwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuwyrm_vpmaxuwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUWYrm + %ymm0 = VPMAXUWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsbyrm_vpminsbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminsbyrm_vpminsbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSBYrm + %ymm0 = VPMINSBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsdyrm_vpminsdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminsdyrm_vpminsdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSDYrm + %ymm0 = VPMINSDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminswyrm_vpminswyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminswyrm_vpminswyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSWYrm + %ymm0 = VPMINSWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminubyrm_vpminubyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminubyrm_vpminubyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUBYrm + %ymm0 = VPMINUBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminudyrm_vpminudyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminudyrm_vpminudyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUDYrm + %ymm0 = VPMINUDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminuwyrm_vpminuwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminuwyrm_vpminuwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUWYrm + %ymm0 = VPMINUWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmuldqyrm_vpmuldqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmuldqyrm_vpmuldqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULDQYrm + %ymm0 = VPMULDQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhrswyrm_vpmulhrswyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhrswyrm_vpmulhrswyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHRSWYrm + %ymm0 = VPMULHRSWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhuwyrm_vpmulhuwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhuwyrm_vpmulhuwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHUWYrm + %ymm0 = VPMULHUWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhwyrm_vpmulhwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhwyrm_vpmulhwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHWYrm + %ymm0 = VPMULHWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulldyrm_vpmulldyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulldyrm_vpmulldyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLDYrm + %ymm0 = VPMULLDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmullwyrm_vpmullwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmullwyrm_vpmullwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLWYrm + %ymm0 = VPMULLWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmuludqyrm_vpmuludqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmuludqyrm_vpmuludqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULUDQYrm + %ymm0 = VPMULUDQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vporyrm_vporyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vporyrm_vporyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORYrm + %ymm0 = VPORYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsadbwyrm_vpsadbwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsadbwyrm_vpsadbwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSADBWYrm + %ymm0 = VPSADBWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpshufbyrm_vpshufbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpshufbyrm_vpshufbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFBYrm + %ymm0 = VPSHUFBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsignbyrm256_vpsignbyrr256_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsignbyrm256_vpsignbyrr256_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSIGNBYrm256 + %ymm0 = VPSIGNBYrr256 undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsigndyrm256_vpsigndyrr256_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsigndyrm256_vpsigndyrr256_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSIGNDYrm256 + %ymm0 = VPSIGNDYrr256 undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsignwyrm256_vpsignwyrr256_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsignwyrm256_vpsignwyrr256_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSIGNWYrm256 + %ymm0 = VPSIGNWYrr256 undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpslldyrm_vpslldyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpslldyrm_vpslldyrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDYrm + %ymm0 = VPSLLDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllqyrm_vpsllqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllqyrm_vpsllqyrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQYrm + %ymm0 = VPSLLQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvdyrm_vpsllvdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvdyrm_vpsllvdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVDYrm + %ymm0 = VPSLLVDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvdrm_vpsllvdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvdrm_vpsllvdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVDrm + %xmm0 = VPSLLVDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvqyrm_vpsllvqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvqyrm_vpsllvqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVQYrm + %ymm0 = VPSLLVQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvqrm_vpsllvqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvqrm_vpsllvqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVQrm + %xmm0 = VPSLLVQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllwyrm_vpsllwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllwyrm_vpsllwyrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWYrm + %ymm0 = VPSLLWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsradyrm_vpsradyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsradyrm_vpsradyrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADYrm + %ymm0 = VPSRADYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsravdyrm_vpsravdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsravdyrm_vpsravdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVDYrm + %ymm0 = VPSRAVDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsravdrm_vpsravdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravdrm_vpsravdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVDrm + %xmm0 = VPSRAVDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrawyrm_vpsrawyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrawyrm_vpsrawyrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWYrm + %ymm0 = VPSRAWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrldyrm_vpsrldyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrldyrm_vpsrldyrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDYrm + %ymm0 = VPSRLDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlqyrm_vpsrlqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlqyrm_vpsrlqyrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQYrm + %ymm0 = VPSRLQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvdyrm_vpsrlvdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvdyrm_vpsrlvdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVDYrm + %ymm0 = VPSRLVDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvdrm_vpsrlvdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvdrm_vpsrlvdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVDrm + %xmm0 = VPSRLVDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvqyrm_vpsrlvqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvqyrm_vpsrlvqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVQYrm + %ymm0 = VPSRLVQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvqrm_vpsrlvqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvqrm_vpsrlvqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVQrm + %xmm0 = VPSRLVQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlwyrm_vpsrlwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlwyrm_vpsrlwyrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWYrm + %ymm0 = VPSRLWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubbyrm_vpsubbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubbyrm_vpsubbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBBYrm + %ymm0 = VPSUBBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubdyrm_vpsubdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubdyrm_vpsubdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBDYrm + %ymm0 = VPSUBDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubqyrm_vpsubqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubqyrm_vpsubqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBQYrm + %ymm0 = VPSUBQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubsbyrm_vpsubsbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubsbyrm_vpsubsbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSBYrm + %ymm0 = VPSUBSBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubswyrm_vpsubswyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubswyrm_vpsubswyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSWYrm + %ymm0 = VPSUBSWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubusbyrm_vpsubusbyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubusbyrm_vpsubusbyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSBYrm + %ymm0 = VPSUBUSBYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubuswyrm_vpsubuswyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubuswyrm_vpsubuswyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSWYrm + %ymm0 = VPSUBUSWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubwyrm_vpsubwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubwyrm_vpsubwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBWYrm + %ymm0 = VPSUBWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhbwyrm_vpunpckhbwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhbwyrm_vpunpckhbwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHBWYrm + %ymm0 = VPUNPCKHBWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhdqyrm_vpunpckhdqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhdqyrm_vpunpckhdqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHDQYrm + %ymm0 = VPUNPCKHDQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhqdqyrm_vpunpckhqdqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhqdqyrm_vpunpckhqdqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHQDQYrm + %ymm0 = VPUNPCKHQDQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhwdyrm_vpunpckhwdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhwdyrm_vpunpckhwdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHWDYrm + %ymm0 = VPUNPCKHWDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklbwyrm_vpunpcklbwyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklbwyrm_vpunpcklbwyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLBWYrm + %ymm0 = VPUNPCKLBWYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckldqyrm_vpunpckldqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckldqyrm_vpunpckldqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLDQYrm + %ymm0 = VPUNPCKLDQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklqdqyrm_vpunpcklqdqyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklqdqyrm_vpunpcklqdqyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLQDQYrm + %ymm0 = VPUNPCKLQDQYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklwdyrm_vpunpcklwdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklwdyrm_vpunpcklwdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLWDYrm + %ymm0 = VPUNPCKLWDYrr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpxoryrm_vpxoryrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpxoryrm_vpxoryrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORYrm + %ymm0 = VPXORYrr undef %ymm1, %2 + RET 0 +... Index: test/CodeGen/X86/memoryFolding-avx512Other.mir =================================================================== --- test/CodeGen/X86/memoryFolding-avx512Other.mir +++ test/CodeGen/X86/memoryFolding-avx512Other.mir @@ -0,0 +1,21918 @@ +# RUN: llc -run-pass greedy -stack-alignment=64 -o - %s | FileCheck %s +# Stack alignment set to 64 to enable folding of aligned mov instructions. +--- | + attributes #0 = { "target-features" = "+avx512f,+avx512bw,+avx512dq,+avx512vbmi,+avx512er,+avx512cd,+avx512pf,+avx512vl,+avx512ifma" } + define void @stack_fold_vextractf32x8zmr_vextractf32x8zrr_test() #0 { ret void } + define void @stack_fold_vextractf64x2z256mr_vextractf64x2z256rr_test() #0 { ret void } + define void @stack_fold_vextractf64x2zmr_vextractf64x2zrr_test() #0 { ret void } + define void @stack_fold_vextracti32x8zmr_vextracti32x8zrr_test() #0 { ret void } + define void @stack_fold_vextracti64x2z256mr_vextracti64x2z256rr_test() #0 { ret void } + define void @stack_fold_vextracti64x2zmr_vextracti64x2zrr_test() #0 { ret void } + define void @stack_fold_vmovdqu16z128mr_vmovdqu16z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqu16z256mr_vmovdqu16z256rr_test() #0 { ret void } + define void @stack_fold_vmovdqu16zmr_vmovdqu16zrr_test() #0 { ret void } + define void @stack_fold_vmovdqu8z128mr_vmovdqu8z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqu8z256mr_vmovdqu8z256rr_test() #0 { ret void } + define void @stack_fold_vmovdqu8zmr_vmovdqu8zrr_test() #0 { ret void } + define void @stack_fold_vpextrbzmr_vpextrbzrr_test() #0 { ret void } + define void @stack_fold_vpextrdzmr_vpextrdzrr_test() #0 { ret void } + define void @stack_fold_vpextrqzmr_vpextrqzrr_test() #0 { ret void } + define void @stack_fold_vpextrwzmr_vpextrwzrr_test() #0 { ret void } + define void @stack_fold_vpmovswbz128mr_vpmovswbz128rr_test() #0 { ret void } + define void @stack_fold_vpmovswbz256mr_vpmovswbz256rr_test() #0 { ret void } + define void @stack_fold_vpmovswbzmr_vpmovswbzrr_test() #0 { ret void } + define void @stack_fold_vpmovuswbz128mr_vpmovuswbz128rr_test() #0 { ret void } + define void @stack_fold_vpmovuswbz256mr_vpmovuswbz256rr_test() #0 { ret void } + define void @stack_fold_vpmovuswbzmr_vpmovuswbzrr_test() #0 { ret void } + define void @stack_fold_vpmovwbz128mr_vpmovwbz128rr_test() #0 { ret void } + define void @stack_fold_vpmovwbz256mr_vpmovwbz256rr_test() #0 { ret void } + define void @stack_fold_vpmovwbzmr_vpmovwbzrr_test() #0 { ret void } + define void @stack_fold_kmovbkm_kmovbkk_test() #0 { ret void } + define void @stack_fold_kmovdkm_kmovdkk_test() #0 { ret void } + define void @stack_fold_kmovqkm_kmovqkk_test() #0 { ret void } + define void @stack_fold_vbroadcastf32x2z256m_vbroadcastf32x2z256r_test() #0 { ret void } + define void @stack_fold_vbroadcastf32x2zm_vbroadcastf32x2zr_test() #0 { ret void } + define void @stack_fold_vbroadcasti32x2z128m_vbroadcasti32x2z128r_test() #0 { ret void } + define void @stack_fold_vbroadcasti32x2z256m_vbroadcasti32x2z256r_test() #0 { ret void } + define void @stack_fold_vbroadcasti32x2zm_vbroadcasti32x2zr_test() #0 { ret void } + define void @stack_fold_vcvtpd2qqz128rm_vcvtpd2qqz128rr_test() #0 { ret void } + define void @stack_fold_vcvtpd2qqz256rm_vcvtpd2qqz256rr_test() #0 { ret void } + define void @stack_fold_vcvtpd2qqzrm_vcvtpd2qqzrr_test() #0 { ret void } + define void @stack_fold_vcvtpd2uqqz128rm_vcvtpd2uqqz128rr_test() #0 { ret void } + define void @stack_fold_vcvtpd2uqqz256rm_vcvtpd2uqqz256rr_test() #0 { ret void } + define void @stack_fold_vcvtpd2uqqzrm_vcvtpd2uqqzrr_test() #0 { ret void } + define void @stack_fold_vcvtps2qqz128rm_vcvtps2qqz128rr_test() #0 { ret void } + define void @stack_fold_vcvtps2qqz256rm_vcvtps2qqz256rr_test() #0 { ret void } + define void @stack_fold_vcvtps2qqzrm_vcvtps2qqzrr_test() #0 { ret void } + define void @stack_fold_vcvtps2uqqz128rm_vcvtps2uqqz128rr_test() #0 { ret void } + define void @stack_fold_vcvtps2uqqz256rm_vcvtps2uqqz256rr_test() #0 { ret void } + define void @stack_fold_vcvtps2uqqzrm_vcvtps2uqqzrr_test() #0 { ret void } + define void @stack_fold_vcvtqq2pdz128rm_vcvtqq2pdz128rr_test() #0 { ret void } + define void @stack_fold_vcvtqq2pdz256rm_vcvtqq2pdz256rr_test() #0 { ret void } + define void @stack_fold_vcvtqq2pdzrm_vcvtqq2pdzrr_test() #0 { ret void } + define void @stack_fold_vcvtqq2psz128rm_vcvtqq2psz128rr_test() #0 { ret void } + define void @stack_fold_vcvtqq2psz256rm_vcvtqq2psz256rr_test() #0 { ret void } + define void @stack_fold_vcvtqq2pszrm_vcvtqq2pszrr_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqz128rm_vcvttpd2qqz128rr_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqz256rm_vcvttpd2qqz256rr_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqzrm_vcvttpd2qqzrr_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqzrmb_vcvttpd2qqzrrb_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqz128rm_vcvttpd2uqqz128rr_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqz256rm_vcvttpd2uqqz256rr_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqzrm_vcvttpd2uqqzrr_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqzrmb_vcvttpd2uqqzrrb_test() #0 { ret void } + define void @stack_fold_vcvttps2qqz128rm_vcvttps2qqz128rr_test() #0 { ret void } + define void @stack_fold_vcvttps2qqz256rm_vcvttps2qqz256rr_test() #0 { ret void } + define void @stack_fold_vcvttps2qqzrm_vcvttps2qqzrr_test() #0 { ret void } + define void @stack_fold_vcvttps2qqzrmb_vcvttps2qqzrrb_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqz128rm_vcvttps2uqqz128rr_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqz256rm_vcvttps2uqqz256rr_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqzrm_vcvttps2uqqzrr_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqzrmb_vcvttps2uqqzrrb_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pdz128rm_vcvtuqq2pdz128rr_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pdz256rm_vcvtuqq2pdz256rr_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pdzrm_vcvtuqq2pdzrr_test() #0 { ret void } + define void @stack_fold_vcvtuqq2psz128rm_vcvtuqq2psz128rr_test() #0 { ret void } + define void @stack_fold_vcvtuqq2psz256rm_vcvtuqq2psz256rr_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pszrm_vcvtuqq2pszrr_test() #0 { ret void } + define void @stack_fold_vexp2pdm_vexp2pdr_test() #0 { ret void } + define void @stack_fold_vexp2pdmb_vexp2pdrb_test() #0 { ret void } + define void @stack_fold_vexp2psm_vexp2psr_test() #0 { ret void } + define void @stack_fold_vexp2psmb_vexp2psrb_test() #0 { ret void } + define void @stack_fold_vfpclasspdz128rm_vfpclasspdz128rr_test() #0 { ret void } + define void @stack_fold_vfpclasspdz256rm_vfpclasspdz256rr_test() #0 { ret void } + define void @stack_fold_vfpclasspdzrm_vfpclasspdzrr_test() #0 { ret void } + define void @stack_fold_vfpclasspsz128rm_vfpclasspsz128rr_test() #0 { ret void } + define void @stack_fold_vfpclasspsz256rm_vfpclasspsz256rr_test() #0 { ret void } + define void @stack_fold_vfpclasspszrm_vfpclasspszrr_test() #0 { ret void } + define void @stack_fold_vfpclasssdrm_vfpclasssdrr_test() #0 { ret void } + define void @stack_fold_vfpclassssrm_vfpclassssrr_test() #0 { ret void } + define void @stack_fold_vmovdqu16z128rm_vmovdqu16z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqu16z256rm_vmovdqu16z256rr_test() #0 { ret void } + define void @stack_fold_vmovdqu16zrm_vmovdqu16zrr_test() #0 { ret void } + define void @stack_fold_vmovdqu8z128rm_vmovdqu8z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqu8z256rm_vmovdqu8z256rr_test() #0 { ret void } + define void @stack_fold_vmovdqu8zrm_vmovdqu8zrr_test() #0 { ret void } + define void @stack_fold_vpabsbz128rm_vpabsbz128rr_test() #0 { ret void } + define void @stack_fold_vpabsbz256rm_vpabsbz256rr_test() #0 { ret void } + define void @stack_fold_vpabsbzrm_vpabsbzrr_test() #0 { ret void } + define void @stack_fold_vpabswz128rm_vpabswz128rr_test() #0 { ret void } + define void @stack_fold_vpabswz256rm_vpabswz256rr_test() #0 { ret void } + define void @stack_fold_vpabswzrm_vpabswzrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastbz128m_vpbroadcastbz128r_test() #0 { ret void } + define void @stack_fold_vpbroadcastbz256m_vpbroadcastbz256r_test() #0 { ret void } + define void @stack_fold_vpbroadcastbzm_vpbroadcastbzr_test() #0 { ret void } + define void @stack_fold_vpbroadcastwz128m_vpbroadcastwz128r_test() #0 { ret void } + define void @stack_fold_vpbroadcastwz256m_vpbroadcastwz256r_test() #0 { ret void } + define void @stack_fold_vpbroadcastwzm_vpbroadcastwzr_test() #0 { ret void } + define void @stack_fold_vpconflictdz128rm_vpconflictdz128rr_test() #0 { ret void } + define void @stack_fold_vpconflictdz256rm_vpconflictdz256rr_test() #0 { ret void } + define void @stack_fold_vpconflictdzrm_vpconflictdzrr_test() #0 { ret void } + define void @stack_fold_vpconflictqz128rm_vpconflictqz128rr_test() #0 { ret void } + define void @stack_fold_vpconflictqz256rm_vpconflictqz256rr_test() #0 { ret void } + define void @stack_fold_vpconflictqzrm_vpconflictqzrr_test() #0 { ret void } + define void @stack_fold_vplzcntdz128rm_vplzcntdz128rr_test() #0 { ret void } + define void @stack_fold_vplzcntdz256rm_vplzcntdz256rr_test() #0 { ret void } + define void @stack_fold_vplzcntdzrm_vplzcntdzrr_test() #0 { ret void } + define void @stack_fold_vplzcntqz128rm_vplzcntqz128rr_test() #0 { ret void } + define void @stack_fold_vplzcntqz256rm_vplzcntqz256rr_test() #0 { ret void } + define void @stack_fold_vplzcntqzrm_vplzcntqzrr_test() #0 { ret void } + define void @stack_fold_vpmovsxbwz128rm_vpmovsxbwz128rr_test() #0 { ret void } + define void @stack_fold_vpmovsxbwz256rm_vpmovsxbwz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsxbwzrm_vpmovsxbwzrr_test() #0 { ret void } + define void @stack_fold_vpmovzxbwz128rm_vpmovzxbwz128rr_test() #0 { ret void } + define void @stack_fold_vpmovzxbwz256rm_vpmovzxbwz256rr_test() #0 { ret void } + define void @stack_fold_vpmovzxbwzrm_vpmovzxbwzrr_test() #0 { ret void } + define void @stack_fold_vpshufhwz128mi_vpshufhwz128ri_test() #0 { ret void } + define void @stack_fold_vpshufhwz256mi_vpshufhwz256ri_test() #0 { ret void } + define void @stack_fold_vpshufhwzmi_vpshufhwzri_test() #0 { ret void } + define void @stack_fold_vpshuflwz128mi_vpshuflwz128ri_test() #0 { ret void } + define void @stack_fold_vpshuflwz256mi_vpshuflwz256ri_test() #0 { ret void } + define void @stack_fold_vpshuflwzmi_vpshuflwzri_test() #0 { ret void } + define void @stack_fold_vpslldqz128rm_vpslldqz128rr_test() #0 { ret void } + define void @stack_fold_vpslldqz256rm_vpslldqz256rr_test() #0 { ret void } + define void @stack_fold_vpslldqz512rm_vpslldqz512rr_test() #0 { ret void } + define void @stack_fold_vpsllwz128mi_vpsllwz128ri_test() #0 { ret void } + define void @stack_fold_vpsllwz256mi_vpsllwz256ri_test() #0 { ret void } + define void @stack_fold_vpsllwzmi_vpsllwzri_test() #0 { ret void } + define void @stack_fold_vpsrawz128mi_vpsrawz128ri_test() #0 { ret void } + define void @stack_fold_vpsrawz256mi_vpsrawz256ri_test() #0 { ret void } + define void @stack_fold_vpsrawzmi_vpsrawzri_test() #0 { ret void } + define void @stack_fold_vpsrldqz128rm_vpsrldqz128rr_test() #0 { ret void } + define void @stack_fold_vpsrldqz256rm_vpsrldqz256rr_test() #0 { ret void } + define void @stack_fold_vpsrldqz512rm_vpsrldqz512rr_test() #0 { ret void } + define void @stack_fold_vpsrlwz128mi_vpsrlwz128ri_test() #0 { ret void } + define void @stack_fold_vpsrlwz256mi_vpsrlwz256ri_test() #0 { ret void } + define void @stack_fold_vpsrlwzmi_vpsrlwzri_test() #0 { ret void } + define void @stack_fold_vrcp28pdm_vrcp28pdr_test() #0 { ret void } + define void @stack_fold_vrcp28pdmb_vrcp28pdrb_test() #0 { ret void } + define void @stack_fold_vrcp28psm_vrcp28psr_test() #0 { ret void } + define void @stack_fold_vrcp28psmb_vrcp28psrb_test() #0 { ret void } + define void @stack_fold_vreducepdz128rmi_vreducepdz128rri_test() #0 { ret void } + define void @stack_fold_vreducepdz256rmi_vreducepdz256rri_test() #0 { ret void } + define void @stack_fold_vreducepdzrmbi_vreducepdzrrib_test() #0 { ret void } + define void @stack_fold_vreducepdzrmi_vreducepdzrri_test() #0 { ret void } + define void @stack_fold_vreducepsz128rmi_vreducepsz128rri_test() #0 { ret void } + define void @stack_fold_vreducepsz256rmi_vreducepsz256rri_test() #0 { ret void } + define void @stack_fold_vreducepszrmbi_vreducepszrrib_test() #0 { ret void } + define void @stack_fold_vreducepszrmi_vreducepszrri_test() #0 { ret void } + define void @stack_fold_vrsqrt28pdm_vrsqrt28pdr_test() #0 { ret void } + define void @stack_fold_vrsqrt28pdmb_vrsqrt28pdrb_test() #0 { ret void } + define void @stack_fold_vrsqrt28psm_vrsqrt28psr_test() #0 { ret void } + define void @stack_fold_vrsqrt28psmb_vrsqrt28psrb_test() #0 { ret void } + define void @stack_fold_vandnpdz128rm_vandnpdz128rr_test() #0 { ret void } + define void @stack_fold_vandnpdz256rm_vandnpdz256rr_test() #0 { ret void } + define void @stack_fold_vandnpdzrm_vandnpdzrr_test() #0 { ret void } + define void @stack_fold_vandnpsz128rm_vandnpsz128rr_test() #0 { ret void } + define void @stack_fold_vandnpsz256rm_vandnpsz256rr_test() #0 { ret void } + define void @stack_fold_vandnpszrm_vandnpszrr_test() #0 { ret void } + define void @stack_fold_vandpdz128rm_vandpdz128rr_test() #0 { ret void } + define void @stack_fold_vandpdz256rm_vandpdz256rr_test() #0 { ret void } + define void @stack_fold_vandpdzrm_vandpdzrr_test() #0 { ret void } + define void @stack_fold_vandpsz128rm_vandpsz128rr_test() #0 { ret void } + define void @stack_fold_vandpsz256rm_vandpsz256rr_test() #0 { ret void } + define void @stack_fold_vandpszrm_vandpszrr_test() #0 { ret void } + define void @stack_fold_vbroadcastf32x2z256mkz_vbroadcastf32x2z256rkz_test() #0 { ret void } + define void @stack_fold_vbroadcastf32x2zmkz_vbroadcastf32x2zrkz_test() #0 { ret void } + define void @stack_fold_vbroadcasti32x2z128mkz_vbroadcasti32x2z128rkz_test() #0 { ret void } + define void @stack_fold_vbroadcasti32x2z256mkz_vbroadcasti32x2z256rkz_test() #0 { ret void } + define void @stack_fold_vbroadcasti32x2zmkz_vbroadcasti32x2zrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2qqz128rmkz_vcvtpd2qqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2qqz256rmkz_vcvtpd2qqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2qqzrmkz_vcvtpd2qqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2uqqz128rmkz_vcvtpd2uqqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2uqqz256rmkz_vcvtpd2uqqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2uqqzrmkz_vcvtpd2uqqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2qqz128rmkz_vcvtps2qqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2qqz256rmkz_vcvtps2qqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2qqzrmkz_vcvtps2qqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2uqqz128rmkz_vcvtps2uqqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2uqqz256rmkz_vcvtps2uqqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2uqqzrmkz_vcvtps2uqqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtqq2pdz128rmkz_vcvtqq2pdz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtqq2pdz256rmkz_vcvtqq2pdz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtqq2pdzrmkz_vcvtqq2pdzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtqq2psz128rmkz_vcvtqq2psz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtqq2psz256rmkz_vcvtqq2psz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtqq2pszrmkz_vcvtqq2pszrrkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqz128rmkz_vcvttpd2qqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqz256rmkz_vcvttpd2qqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqzrmbkz_vcvttpd2qqzrrbkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqzrmkz_vcvttpd2qqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqz128rmkz_vcvttpd2uqqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqz256rmkz_vcvttpd2uqqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqzrmbkz_vcvttpd2uqqzrrbkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqzrmkz_vcvttpd2uqqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2qqz128rmkz_vcvttps2qqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2qqz256rmkz_vcvttps2qqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2qqzrmbkz_vcvttps2qqzrrbkz_test() #0 { ret void } + define void @stack_fold_vcvttps2qqzrmkz_vcvttps2qqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqz128rmkz_vcvttps2uqqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqz256rmkz_vcvttps2uqqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqzrmbkz_vcvttps2uqqzrrbkz_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqzrmkz_vcvttps2uqqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pdz128rmkz_vcvtuqq2pdz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pdz256rmkz_vcvtuqq2pdz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pdzrmkz_vcvtuqq2pdzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtuqq2psz128rmkz_vcvtuqq2psz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtuqq2psz256rmkz_vcvtuqq2psz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pszrmkz_vcvtuqq2pszrrkz_test() #0 { ret void } + define void @stack_fold_vdbpsadbwz128rmi_vdbpsadbwz128rri_test() #0 { ret void } + define void @stack_fold_vdbpsadbwz256rmi_vdbpsadbwz256rri_test() #0 { ret void } + define void @stack_fold_vdbpsadbwzrmi_vdbpsadbwzrri_test() #0 { ret void } + define void @stack_fold_vexp2pdmbkz_vexp2pdrbkz_test() #0 { ret void } + define void @stack_fold_vexp2pdmkz_vexp2pdrkz_test() #0 { ret void } + define void @stack_fold_vexp2psmbkz_vexp2psrbkz_test() #0 { ret void } + define void @stack_fold_vexp2psmkz_vexp2psrkz_test() #0 { ret void } + define void @stack_fold_vfpclasspdz128rmk_vfpclasspdz128rrk_test() #0 { ret void } + define void @stack_fold_vfpclasspdz256rmk_vfpclasspdz256rrk_test() #0 { ret void } + define void @stack_fold_vfpclasspdzrmk_vfpclasspdzrrk_test() #0 { ret void } + define void @stack_fold_vfpclasspsz128rmk_vfpclasspsz128rrk_test() #0 { ret void } + define void @stack_fold_vfpclasspsz256rmk_vfpclasspsz256rrk_test() #0 { ret void } + define void @stack_fold_vfpclasspszrmk_vfpclasspszrrk_test() #0 { ret void } + define void @stack_fold_vfpclasssdrmk_vfpclasssdrrk_test() #0 { ret void } + define void @stack_fold_vfpclassssrmk_vfpclassssrrk_test() #0 { ret void } + define void @stack_fold_vinsertf32x8zrm_vinsertf32x8zrr_test() #0 { ret void } + define void @stack_fold_vinsertf64x2z256rm_vinsertf64x2z256rr_test() #0 { ret void } + define void @stack_fold_vinsertf64x2zrm_vinsertf64x2zrr_test() #0 { ret void } + define void @stack_fold_vinserti32x8zrm_vinserti32x8zrr_test() #0 { ret void } + define void @stack_fold_vinserti64x2z256rm_vinserti64x2z256rr_test() #0 { ret void } + define void @stack_fold_vinserti64x2zrm_vinserti64x2zrr_test() #0 { ret void } + define void @stack_fold_vmovdqu16z128rmkz_vmovdqu16z128rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu16z256rmkz_vmovdqu16z256rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu16zrmkz_vmovdqu16zrrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu8z128rmkz_vmovdqu8z128rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu8z256rmkz_vmovdqu8z256rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu8zrmkz_vmovdqu8zrrkz_test() #0 { ret void } + define void @stack_fold_vorpdz128rm_vorpdz128rr_test() #0 { ret void } + define void @stack_fold_vorpdz256rm_vorpdz256rr_test() #0 { ret void } + define void @stack_fold_vorpdzrm_vorpdzrr_test() #0 { ret void } + define void @stack_fold_vorpsz128rm_vorpsz128rr_test() #0 { ret void } + define void @stack_fold_vorpsz256rm_vorpsz256rr_test() #0 { ret void } + define void @stack_fold_vorpszrm_vorpszrr_test() #0 { ret void } + define void @stack_fold_vpabsbz128rmkz_vpabsbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpabsbz256rmkz_vpabsbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpabsbzrmkz_vpabsbzrrkz_test() #0 { ret void } + define void @stack_fold_vpabswz128rmkz_vpabswz128rrkz_test() #0 { ret void } + define void @stack_fold_vpabswz256rmkz_vpabswz256rrkz_test() #0 { ret void } + define void @stack_fold_vpabswzrmkz_vpabswzrrkz_test() #0 { ret void } + define void @stack_fold_vpackssdwz128rm_vpackssdwz128rr_test() #0 { ret void } + define void @stack_fold_vpackssdwz256rm_vpackssdwz256rr_test() #0 { ret void } + define void @stack_fold_vpackssdwzrm_vpackssdwzrr_test() #0 { ret void } + define void @stack_fold_vpacksswbz128rm_vpacksswbz128rr_test() #0 { ret void } + define void @stack_fold_vpacksswbz256rm_vpacksswbz256rr_test() #0 { ret void } + define void @stack_fold_vpacksswbzrm_vpacksswbzrr_test() #0 { ret void } + define void @stack_fold_vpackusdwz128rm_vpackusdwz128rr_test() #0 { ret void } + define void @stack_fold_vpackusdwz256rm_vpackusdwz256rr_test() #0 { ret void } + define void @stack_fold_vpackusdwzrm_vpackusdwzrr_test() #0 { ret void } + define void @stack_fold_vpackuswbz128rm_vpackuswbz128rr_test() #0 { ret void } + define void @stack_fold_vpackuswbz256rm_vpackuswbz256rr_test() #0 { ret void } + define void @stack_fold_vpackuswbzrm_vpackuswbzrr_test() #0 { ret void } + define void @stack_fold_vpaddbz128rm_vpaddbz128rr_test() #0 { ret void } + define void @stack_fold_vpaddbz256rm_vpaddbz256rr_test() #0 { ret void } + define void @stack_fold_vpaddbzrm_vpaddbzrr_test() #0 { ret void } + define void @stack_fold_vpaddsbz128rm_vpaddsbz128rr_test() #0 { ret void } + define void @stack_fold_vpaddsbz256rm_vpaddsbz256rr_test() #0 { ret void } + define void @stack_fold_vpaddsbzrm_vpaddsbzrr_test() #0 { ret void } + define void @stack_fold_vpaddswz128rm_vpaddswz128rr_test() #0 { ret void } + define void @stack_fold_vpaddswz256rm_vpaddswz256rr_test() #0 { ret void } + define void @stack_fold_vpaddswzrm_vpaddswzrr_test() #0 { ret void } + define void @stack_fold_vpaddusbz128rm_vpaddusbz128rr_test() #0 { ret void } + define void @stack_fold_vpaddusbz256rm_vpaddusbz256rr_test() #0 { ret void } + define void @stack_fold_vpaddusbzrm_vpaddusbzrr_test() #0 { ret void } + define void @stack_fold_vpadduswz128rm_vpadduswz128rr_test() #0 { ret void } + define void @stack_fold_vpadduswz256rm_vpadduswz256rr_test() #0 { ret void } + define void @stack_fold_vpadduswzrm_vpadduswzrr_test() #0 { ret void } + define void @stack_fold_vpaddwz128rm_vpaddwz128rr_test() #0 { ret void } + define void @stack_fold_vpaddwz256rm_vpaddwz256rr_test() #0 { ret void } + define void @stack_fold_vpaddwzrm_vpaddwzrr_test() #0 { ret void } + define void @stack_fold_vpalignrz128rmi_vpalignrz128rri_test() #0 { ret void } + define void @stack_fold_vpalignrz256rmi_vpalignrz256rri_test() #0 { ret void } + define void @stack_fold_vpalignrzrmi_vpalignrzrri_test() #0 { ret void } + define void @stack_fold_vpavgbz128rm_vpavgbz128rr_test() #0 { ret void } + define void @stack_fold_vpavgbz256rm_vpavgbz256rr_test() #0 { ret void } + define void @stack_fold_vpavgbzrm_vpavgbzrr_test() #0 { ret void } + define void @stack_fold_vpavgwz128rm_vpavgwz128rr_test() #0 { ret void } + define void @stack_fold_vpavgwz256rm_vpavgwz256rr_test() #0 { ret void } + define void @stack_fold_vpavgwzrm_vpavgwzrr_test() #0 { ret void } + define void @stack_fold_vpblendmbz128rm_vpblendmbz128rr_test() #0 { ret void } + define void @stack_fold_vpblendmbz256rm_vpblendmbz256rr_test() #0 { ret void } + define void @stack_fold_vpblendmbzrm_vpblendmbzrr_test() #0 { ret void } + define void @stack_fold_vpblendmwz128rm_vpblendmwz128rr_test() #0 { ret void } + define void @stack_fold_vpblendmwz256rm_vpblendmwz256rr_test() #0 { ret void } + define void @stack_fold_vpblendmwzrm_vpblendmwzrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastbz128mkz_vpbroadcastbz128rkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastbz256mkz_vpbroadcastbz256rkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastbzmkz_vpbroadcastbzrkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastwz128mkz_vpbroadcastwz128rkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastwz256mkz_vpbroadcastwz256rkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastwzmkz_vpbroadcastwzrkz_test() #0 { ret void } + define void @stack_fold_vpcmpbz128rmi_vpcmpbz128rri_test() #0 { ret void } + define void @stack_fold_vpcmpbz128rmi_alt_vpcmpbz128rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpbz256rmi_vpcmpbz256rri_test() #0 { ret void } + define void @stack_fold_vpcmpbz256rmi_alt_vpcmpbz256rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpbzrmi_vpcmpbzrri_test() #0 { ret void } + define void @stack_fold_vpcmpbzrmi_alt_vpcmpbzrri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpeqbz128rm_vpcmpeqbz128rr_test() #0 { ret void } + define void @stack_fold_vpcmpeqbz256rm_vpcmpeqbz256rr_test() #0 { ret void } + define void @stack_fold_vpcmpeqbzrm_vpcmpeqbzrr_test() #0 { ret void } + define void @stack_fold_vpcmpeqwz128rm_vpcmpeqwz128rr_test() #0 { ret void } + define void @stack_fold_vpcmpeqwz256rm_vpcmpeqwz256rr_test() #0 { ret void } + define void @stack_fold_vpcmpeqwzrm_vpcmpeqwzrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtbz128rm_vpcmpgtbz128rr_test() #0 { ret void } + define void @stack_fold_vpcmpgtbz256rm_vpcmpgtbz256rr_test() #0 { ret void } + define void @stack_fold_vpcmpgtbzrm_vpcmpgtbzrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtwz128rm_vpcmpgtwz128rr_test() #0 { ret void } + define void @stack_fold_vpcmpgtwz256rm_vpcmpgtwz256rr_test() #0 { ret void } + define void @stack_fold_vpcmpgtwzrm_vpcmpgtwzrr_test() #0 { ret void } + define void @stack_fold_vpcmpubz128rmi_vpcmpubz128rri_test() #0 { ret void } + define void @stack_fold_vpcmpubz128rmi_alt_vpcmpubz128rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpubz256rmi_vpcmpubz256rri_test() #0 { ret void } + define void @stack_fold_vpcmpubz256rmi_alt_vpcmpubz256rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpubzrmi_vpcmpubzrri_test() #0 { ret void } + define void @stack_fold_vpcmpubzrmi_alt_vpcmpubzrri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuwz128rmi_vpcmpuwz128rri_test() #0 { ret void } + define void @stack_fold_vpcmpuwz128rmi_alt_vpcmpuwz128rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuwz256rmi_vpcmpuwz256rri_test() #0 { ret void } + define void @stack_fold_vpcmpuwz256rmi_alt_vpcmpuwz256rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuwzrmi_vpcmpuwzrri_test() #0 { ret void } + define void @stack_fold_vpcmpuwzrmi_alt_vpcmpuwzrri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpwz128rmi_vpcmpwz128rri_test() #0 { ret void } + define void @stack_fold_vpcmpwz128rmi_alt_vpcmpwz128rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpwz256rmi_vpcmpwz256rri_test() #0 { ret void } + define void @stack_fold_vpcmpwz256rmi_alt_vpcmpwz256rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpwzrmi_vpcmpwzrri_test() #0 { ret void } + define void @stack_fold_vpcmpwzrmi_alt_vpcmpwzrri_alt_test() #0 { ret void } + define void @stack_fold_vpconflictdz128rmkz_vpconflictdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpconflictdz256rmkz_vpconflictdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpconflictdzrmkz_vpconflictdzrrkz_test() #0 { ret void } + define void @stack_fold_vpconflictqz128rmkz_vpconflictqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpconflictqz256rmkz_vpconflictqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpconflictqzrmkz_vpconflictqzrrkz_test() #0 { ret void } + define void @stack_fold_vpermbz128rm_vpermbz128rr_test() #0 { ret void } + define void @stack_fold_vpermbz256rm_vpermbz256rr_test() #0 { ret void } + define void @stack_fold_vpermbzrm_vpermbzrr_test() #0 { ret void } + define void @stack_fold_vpermwz128rm_vpermwz128rr_test() #0 { ret void } + define void @stack_fold_vpermwz256rm_vpermwz256rr_test() #0 { ret void } + define void @stack_fold_vpermwzrm_vpermwzrr_test() #0 { ret void } + define void @stack_fold_vpinsrbzrm_vpinsrbzrr_test() #0 { ret void } + define void @stack_fold_vpinsrdzrm_vpinsrdzrr_test() #0 { ret void } + define void @stack_fold_vpinsrqzrm_vpinsrqzrr_test() #0 { ret void } + define void @stack_fold_vpinsrwzrm_vpinsrwzrr_test() #0 { ret void } + define void @stack_fold_vplzcntdz128rmkz_vplzcntdz128rrkz_test() #0 { ret void } + define void @stack_fold_vplzcntdz256rmkz_vplzcntdz256rrkz_test() #0 { ret void } + define void @stack_fold_vplzcntdzrmkz_vplzcntdzrrkz_test() #0 { ret void } + define void @stack_fold_vplzcntqz128rmkz_vplzcntqz128rrkz_test() #0 { ret void } + define void @stack_fold_vplzcntqz256rmkz_vplzcntqz256rrkz_test() #0 { ret void } + define void @stack_fold_vplzcntqzrmkz_vplzcntqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmaddubswz128rm_vpmaddubswz128rr_test() #0 { ret void } + define void @stack_fold_vpmaddubswz256rm_vpmaddubswz256rr_test() #0 { ret void } + define void @stack_fold_vpmaddubswzrm_vpmaddubswzrr_test() #0 { ret void } + define void @stack_fold_vpmaddwdz128rm_vpmaddwdz128rr_test() #0 { ret void } + define void @stack_fold_vpmaddwdz256rm_vpmaddwdz256rr_test() #0 { ret void } + define void @stack_fold_vpmaddwdzrm_vpmaddwdzrr_test() #0 { ret void } + define void @stack_fold_vpmaxsbz128rm_vpmaxsbz128rr_test() #0 { ret void } + define void @stack_fold_vpmaxsbz256rm_vpmaxsbz256rr_test() #0 { ret void } + define void @stack_fold_vpmaxsbzrm_vpmaxsbzrr_test() #0 { ret void } + define void @stack_fold_vpmaxswz128rm_vpmaxswz128rr_test() #0 { ret void } + define void @stack_fold_vpmaxswz256rm_vpmaxswz256rr_test() #0 { ret void } + define void @stack_fold_vpmaxswzrm_vpmaxswzrr_test() #0 { ret void } + define void @stack_fold_vpmaxubz128rm_vpmaxubz128rr_test() #0 { ret void } + define void @stack_fold_vpmaxubz256rm_vpmaxubz256rr_test() #0 { ret void } + define void @stack_fold_vpmaxubzrm_vpmaxubzrr_test() #0 { ret void } + define void @stack_fold_vpmaxuwz128rm_vpmaxuwz128rr_test() #0 { ret void } + define void @stack_fold_vpmaxuwz256rm_vpmaxuwz256rr_test() #0 { ret void } + define void @stack_fold_vpmaxuwzrm_vpmaxuwzrr_test() #0 { ret void } + define void @stack_fold_vpminsbz128rm_vpminsbz128rr_test() #0 { ret void } + define void @stack_fold_vpminsbz256rm_vpminsbz256rr_test() #0 { ret void } + define void @stack_fold_vpminsbzrm_vpminsbzrr_test() #0 { ret void } + define void @stack_fold_vpminswz128rm_vpminswz128rr_test() #0 { ret void } + define void @stack_fold_vpminswz256rm_vpminswz256rr_test() #0 { ret void } + define void @stack_fold_vpminswzrm_vpminswzrr_test() #0 { ret void } + define void @stack_fold_vpminubz128rm_vpminubz128rr_test() #0 { ret void } + define void @stack_fold_vpminubz256rm_vpminubz256rr_test() #0 { ret void } + define void @stack_fold_vpminubzrm_vpminubzrr_test() #0 { ret void } + define void @stack_fold_vpminuwz128rm_vpminuwz128rr_test() #0 { ret void } + define void @stack_fold_vpminuwz256rm_vpminuwz256rr_test() #0 { ret void } + define void @stack_fold_vpminuwzrm_vpminuwzrr_test() #0 { ret void } + define void @stack_fold_vpmovsxbwz128rmkz_vpmovsxbwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxbwz256rmkz_vpmovsxbwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxbwzrmkz_vpmovsxbwzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxbwz128rmkz_vpmovzxbwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxbwz256rmkz_vpmovzxbwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxbwzrmkz_vpmovzxbwzrrkz_test() #0 { ret void } + define void @stack_fold_vpmulhrswz128rm_vpmulhrswz128rr_test() #0 { ret void } + define void @stack_fold_vpmulhrswz256rm_vpmulhrswz256rr_test() #0 { ret void } + define void @stack_fold_vpmulhrswzrm_vpmulhrswzrr_test() #0 { ret void } + define void @stack_fold_vpmulhuwz128rm_vpmulhuwz128rr_test() #0 { ret void } + define void @stack_fold_vpmulhuwz256rm_vpmulhuwz256rr_test() #0 { ret void } + define void @stack_fold_vpmulhuwzrm_vpmulhuwzrr_test() #0 { ret void } + define void @stack_fold_vpmulhwz128rm_vpmulhwz128rr_test() #0 { ret void } + define void @stack_fold_vpmulhwz256rm_vpmulhwz256rr_test() #0 { ret void } + define void @stack_fold_vpmulhwzrm_vpmulhwzrr_test() #0 { ret void } + define void @stack_fold_vpmullqz128rm_vpmullqz128rr_test() #0 { ret void } + define void @stack_fold_vpmullqz256rm_vpmullqz256rr_test() #0 { ret void } + define void @stack_fold_vpmullqzrm_vpmullqzrr_test() #0 { ret void } + define void @stack_fold_vpmullwz128rm_vpmullwz128rr_test() #0 { ret void } + define void @stack_fold_vpmullwz256rm_vpmullwz256rr_test() #0 { ret void } + define void @stack_fold_vpmullwzrm_vpmullwzrr_test() #0 { ret void } + define void @stack_fold_vpmultishiftqbz128rm_vpmultishiftqbz128rr_test() #0 { ret void } + define void @stack_fold_vpmultishiftqbz256rm_vpmultishiftqbz256rr_test() #0 { ret void } + define void @stack_fold_vpmultishiftqbzrm_vpmultishiftqbzrr_test() #0 { ret void } + define void @stack_fold_vpsadbwz128rm_vpsadbwz128rr_test() #0 { ret void } + define void @stack_fold_vpsadbwz256rm_vpsadbwz256rr_test() #0 { ret void } + define void @stack_fold_vpsadbwz512rm_vpsadbwz512rr_test() #0 { ret void } + define void @stack_fold_vpshufbz128rm_vpshufbz128rr_test() #0 { ret void } + define void @stack_fold_vpshufbz256rm_vpshufbz256rr_test() #0 { ret void } + define void @stack_fold_vpshufbzrm_vpshufbzrr_test() #0 { ret void } + define void @stack_fold_vpshufhwz128mikz_vpshufhwz128rikz_test() #0 { ret void } + define void @stack_fold_vpshufhwz256mikz_vpshufhwz256rikz_test() #0 { ret void } + define void @stack_fold_vpshufhwzmikz_vpshufhwzrikz_test() #0 { ret void } + define void @stack_fold_vpshuflwz128mikz_vpshuflwz128rikz_test() #0 { ret void } + define void @stack_fold_vpshuflwz256mikz_vpshuflwz256rikz_test() #0 { ret void } + define void @stack_fold_vpshuflwzmikz_vpshuflwzrikz_test() #0 { ret void } + define void @stack_fold_vpsllvwz128rm_vpsllvwz128rr_test() #0 { ret void } + define void @stack_fold_vpsllvwz256rm_vpsllvwz256rr_test() #0 { ret void } + define void @stack_fold_vpsllvwzrm_vpsllvwzrr_test() #0 { ret void } + define void @stack_fold_vpsllwz128mikz_vpsllwz128rikz_test() #0 { ret void } + define void @stack_fold_vpsllwz128rm_vpsllwz128rr_test() #0 { ret void } + define void @stack_fold_vpsllwz256mikz_vpsllwz256rikz_test() #0 { ret void } + define void @stack_fold_vpsllwz256rm_vpsllwz256rr_test() #0 { ret void } + define void @stack_fold_vpsllwzmikz_vpsllwzrikz_test() #0 { ret void } + define void @stack_fold_vpsllwzrm_vpsllwzrr_test() #0 { ret void } + define void @stack_fold_vpsravwz128rm_vpsravwz128rr_test() #0 { ret void } + define void @stack_fold_vpsravwz256rm_vpsravwz256rr_test() #0 { ret void } + define void @stack_fold_vpsravwzrm_vpsravwzrr_test() #0 { ret void } + define void @stack_fold_vpsrawz128mikz_vpsrawz128rikz_test() #0 { ret void } + define void @stack_fold_vpsrawz128rm_vpsrawz128rr_test() #0 { ret void } + define void @stack_fold_vpsrawz256mikz_vpsrawz256rikz_test() #0 { ret void } + define void @stack_fold_vpsrawz256rm_vpsrawz256rr_test() #0 { ret void } + define void @stack_fold_vpsrawzmikz_vpsrawzrikz_test() #0 { ret void } + define void @stack_fold_vpsrawzrm_vpsrawzrr_test() #0 { ret void } + define void @stack_fold_vpsrlvwz128rm_vpsrlvwz128rr_test() #0 { ret void } + define void @stack_fold_vpsrlvwz256rm_vpsrlvwz256rr_test() #0 { ret void } + define void @stack_fold_vpsrlvwzrm_vpsrlvwzrr_test() #0 { ret void } + define void @stack_fold_vpsrlwz128mikz_vpsrlwz128rikz_test() #0 { ret void } + define void @stack_fold_vpsrlwz128rm_vpsrlwz128rr_test() #0 { ret void } + define void @stack_fold_vpsrlwz256mikz_vpsrlwz256rikz_test() #0 { ret void } + define void @stack_fold_vpsrlwz256rm_vpsrlwz256rr_test() #0 { ret void } + define void @stack_fold_vpsrlwzmikz_vpsrlwzrikz_test() #0 { ret void } + define void @stack_fold_vpsrlwzrm_vpsrlwzrr_test() #0 { ret void } + define void @stack_fold_vpsubbz128rm_vpsubbz128rr_test() #0 { ret void } + define void @stack_fold_vpsubbz256rm_vpsubbz256rr_test() #0 { ret void } + define void @stack_fold_vpsubbzrm_vpsubbzrr_test() #0 { ret void } + define void @stack_fold_vpsubsbz128rm_vpsubsbz128rr_test() #0 { ret void } + define void @stack_fold_vpsubsbz256rm_vpsubsbz256rr_test() #0 { ret void } + define void @stack_fold_vpsubsbzrm_vpsubsbzrr_test() #0 { ret void } + define void @stack_fold_vpsubswz128rm_vpsubswz128rr_test() #0 { ret void } + define void @stack_fold_vpsubswz256rm_vpsubswz256rr_test() #0 { ret void } + define void @stack_fold_vpsubswzrm_vpsubswzrr_test() #0 { ret void } + define void @stack_fold_vpsubusbz128rm_vpsubusbz128rr_test() #0 { ret void } + define void @stack_fold_vpsubusbz256rm_vpsubusbz256rr_test() #0 { ret void } + define void @stack_fold_vpsubusbzrm_vpsubusbzrr_test() #0 { ret void } + define void @stack_fold_vpsubuswz128rm_vpsubuswz128rr_test() #0 { ret void } + define void @stack_fold_vpsubuswz256rm_vpsubuswz256rr_test() #0 { ret void } + define void @stack_fold_vpsubuswzrm_vpsubuswzrr_test() #0 { ret void } + define void @stack_fold_vpsubwz128rm_vpsubwz128rr_test() #0 { ret void } + define void @stack_fold_vpsubwz256rm_vpsubwz256rr_test() #0 { ret void } + define void @stack_fold_vpsubwzrm_vpsubwzrr_test() #0 { ret void } + define void @stack_fold_vptestmbz128rm_vptestmbz128rr_test() #0 { ret void } + define void @stack_fold_vptestmbz256rm_vptestmbz256rr_test() #0 { ret void } + define void @stack_fold_vptestmbzrm_vptestmbzrr_test() #0 { ret void } + define void @stack_fold_vptestmwz128rm_vptestmwz128rr_test() #0 { ret void } + define void @stack_fold_vptestmwz256rm_vptestmwz256rr_test() #0 { ret void } + define void @stack_fold_vptestmwzrm_vptestmwzrr_test() #0 { ret void } + define void @stack_fold_vptestnmbz128rm_vptestnmbz128rr_test() #0 { ret void } + define void @stack_fold_vptestnmbz256rm_vptestnmbz256rr_test() #0 { ret void } + define void @stack_fold_vptestnmbzrm_vptestnmbzrr_test() #0 { ret void } + define void @stack_fold_vptestnmwz128rm_vptestnmwz128rr_test() #0 { ret void } + define void @stack_fold_vptestnmwz256rm_vptestnmwz256rr_test() #0 { ret void } + define void @stack_fold_vptestnmwzrm_vptestnmwzrr_test() #0 { ret void } + define void @stack_fold_vpunpckhbwz128rm_vpunpckhbwz128rr_test() #0 { ret void } + define void @stack_fold_vpunpckhbwz256rm_vpunpckhbwz256rr_test() #0 { ret void } + define void @stack_fold_vpunpckhbwzrm_vpunpckhbwzrr_test() #0 { ret void } + define void @stack_fold_vpunpckhwdz128rm_vpunpckhwdz128rr_test() #0 { ret void } + define void @stack_fold_vpunpckhwdz256rm_vpunpckhwdz256rr_test() #0 { ret void } + define void @stack_fold_vpunpckhwdzrm_vpunpckhwdzrr_test() #0 { ret void } + define void @stack_fold_vpunpcklbwz128rm_vpunpcklbwz128rr_test() #0 { ret void } + define void @stack_fold_vpunpcklbwz256rm_vpunpcklbwz256rr_test() #0 { ret void } + define void @stack_fold_vpunpcklbwzrm_vpunpcklbwzrr_test() #0 { ret void } + define void @stack_fold_vpunpcklwdz128rm_vpunpcklwdz128rr_test() #0 { ret void } + define void @stack_fold_vpunpcklwdz256rm_vpunpcklwdz256rr_test() #0 { ret void } + define void @stack_fold_vpunpcklwdzrm_vpunpcklwdzrr_test() #0 { ret void } + define void @stack_fold_vrangepdz128rmi_vrangepdz128rri_test() #0 { ret void } + define void @stack_fold_vrangepdz256rmi_vrangepdz256rri_test() #0 { ret void } + define void @stack_fold_vrangepdzrmbi_vrangepdzrrib_test() #0 { ret void } + define void @stack_fold_vrangepdzrmi_vrangepdzrri_test() #0 { ret void } + define void @stack_fold_vrangepsz128rmi_vrangepsz128rri_test() #0 { ret void } + define void @stack_fold_vrangepsz256rmi_vrangepsz256rri_test() #0 { ret void } + define void @stack_fold_vrangepszrmbi_vrangepszrrib_test() #0 { ret void } + define void @stack_fold_vrangepszrmi_vrangepszrri_test() #0 { ret void } + define void @stack_fold_vrangesdz128rmi_vrangesdz128rri_test() #0 { ret void } + define void @stack_fold_vrangessz128rmi_vrangessz128rri_test() #0 { ret void } + define void @stack_fold_vrcp28pdmbkz_vrcp28pdrbkz_test() #0 { ret void } + define void @stack_fold_vrcp28pdmkz_vrcp28pdrkz_test() #0 { ret void } + define void @stack_fold_vrcp28psmbkz_vrcp28psrbkz_test() #0 { ret void } + define void @stack_fold_vrcp28psmkz_vrcp28psrkz_test() #0 { ret void } + define void @stack_fold_vrcp28sdm_vrcp28sdr_test() #0 { ret void } + define void @stack_fold_vrcp28ssm_vrcp28ssr_test() #0 { ret void } + define void @stack_fold_vreducepdz128rmikz_vreducepdz128rrikz_test() #0 { ret void } + define void @stack_fold_vreducepdz256rmikz_vreducepdz256rrikz_test() #0 { ret void } + define void @stack_fold_vreducepdzrmbikz_vreducepdzrribkz_test() #0 { ret void } + define void @stack_fold_vreducepdzrmikz_vreducepdzrrikz_test() #0 { ret void } + define void @stack_fold_vreducepsz128rmikz_vreducepsz128rrikz_test() #0 { ret void } + define void @stack_fold_vreducepsz256rmikz_vreducepsz256rrikz_test() #0 { ret void } + define void @stack_fold_vreducepszrmbikz_vreducepszrribkz_test() #0 { ret void } + define void @stack_fold_vreducepszrmikz_vreducepszrrikz_test() #0 { ret void } + define void @stack_fold_vreducesdz128rmi_vreducesdz128rri_test() #0 { ret void } + define void @stack_fold_vreducessz128rmi_vreducessz128rri_test() #0 { ret void } + define void @stack_fold_vrsqrt28pdmbkz_vrsqrt28pdrbkz_test() #0 { ret void } + define void @stack_fold_vrsqrt28pdmkz_vrsqrt28pdrkz_test() #0 { ret void } + define void @stack_fold_vrsqrt28psmbkz_vrsqrt28psrbkz_test() #0 { ret void } + define void @stack_fold_vrsqrt28psmkz_vrsqrt28psrkz_test() #0 { ret void } + define void @stack_fold_vrsqrt28sdm_vrsqrt28sdr_test() #0 { ret void } + define void @stack_fold_vrsqrt28ssm_vrsqrt28ssr_test() #0 { ret void } + define void @stack_fold_vxorpdz128rm_vxorpdz128rr_test() #0 { ret void } + define void @stack_fold_vxorpdz256rm_vxorpdz256rr_test() #0 { ret void } + define void @stack_fold_vxorpdzrm_vxorpdzrr_test() #0 { ret void } + define void @stack_fold_vxorpsz128rm_vxorpsz128rr_test() #0 { ret void } + define void @stack_fold_vxorpsz256rm_vxorpsz256rr_test() #0 { ret void } + define void @stack_fold_vxorpszrm_vxorpszrr_test() #0 { ret void } + define void @stack_fold_vandnpdz128rmkz_vandnpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vandnpdz256rmkz_vandnpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vandnpdzrmkz_vandnpdzrrkz_test() #0 { ret void } + define void @stack_fold_vandnpsz128rmkz_vandnpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vandnpsz256rmkz_vandnpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vandnpszrmkz_vandnpszrrkz_test() #0 { ret void } + define void @stack_fold_vandpdz128rmkz_vandpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vandpdz256rmkz_vandpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vandpdzrmkz_vandpdzrrkz_test() #0 { ret void } + define void @stack_fold_vandpsz128rmkz_vandpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vandpsz256rmkz_vandpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vandpszrmkz_vandpszrrkz_test() #0 { ret void } + define void @stack_fold_vbroadcastf32x2z256mk_vbroadcastf32x2z256rk_test() #0 { ret void } + define void @stack_fold_vbroadcastf32x2zmk_vbroadcastf32x2zrk_test() #0 { ret void } + define void @stack_fold_vbroadcasti32x2z128mk_vbroadcasti32x2z128rk_test() #0 { ret void } + define void @stack_fold_vbroadcasti32x2z256mk_vbroadcasti32x2z256rk_test() #0 { ret void } + define void @stack_fold_vbroadcasti32x2zmk_vbroadcasti32x2zrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2qqz128rmk_vcvtpd2qqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2qqz256rmk_vcvtpd2qqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2qqzrmk_vcvtpd2qqzrrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2uqqz128rmk_vcvtpd2uqqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2uqqz256rmk_vcvtpd2uqqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2uqqzrmk_vcvtpd2uqqzrrk_test() #0 { ret void } + define void @stack_fold_vcvtps2qqz128rmk_vcvtps2qqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtps2qqz256rmk_vcvtps2qqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtps2qqzrmk_vcvtps2qqzrrk_test() #0 { ret void } + define void @stack_fold_vcvtps2uqqz128rmk_vcvtps2uqqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtps2uqqz256rmk_vcvtps2uqqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtps2uqqzrmk_vcvtps2uqqzrrk_test() #0 { ret void } + define void @stack_fold_vcvtqq2pdz128rmk_vcvtqq2pdz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtqq2pdz256rmk_vcvtqq2pdz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtqq2pdzrmk_vcvtqq2pdzrrk_test() #0 { ret void } + define void @stack_fold_vcvtqq2psz128rmk_vcvtqq2psz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtqq2psz256rmk_vcvtqq2psz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtqq2pszrmk_vcvtqq2pszrrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqz128rmk_vcvttpd2qqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqz256rmk_vcvttpd2qqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqzrmbk_vcvttpd2qqzrrbk_test() #0 { ret void } + define void @stack_fold_vcvttpd2qqzrmk_vcvttpd2qqzrrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqz128rmk_vcvttpd2uqqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqz256rmk_vcvttpd2uqqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqzrmbk_vcvttpd2uqqzrrbk_test() #0 { ret void } + define void @stack_fold_vcvttpd2uqqzrmk_vcvttpd2uqqzrrk_test() #0 { ret void } + define void @stack_fold_vcvttps2qqz128rmk_vcvttps2qqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvttps2qqz256rmk_vcvttps2qqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvttps2qqzrmbk_vcvttps2qqzrrbk_test() #0 { ret void } + define void @stack_fold_vcvttps2qqzrmk_vcvttps2qqzrrk_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqz128rmk_vcvttps2uqqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqz256rmk_vcvttps2uqqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqzrmbk_vcvttps2uqqzrrbk_test() #0 { ret void } + define void @stack_fold_vcvttps2uqqzrmk_vcvttps2uqqzrrk_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pdz128rmk_vcvtuqq2pdz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pdz256rmk_vcvtuqq2pdz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pdzrmk_vcvtuqq2pdzrrk_test() #0 { ret void } + define void @stack_fold_vcvtuqq2psz128rmk_vcvtuqq2psz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtuqq2psz256rmk_vcvtuqq2psz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtuqq2pszrmk_vcvtuqq2pszrrk_test() #0 { ret void } + define void @stack_fold_vdbpsadbwz128rmikz_vdbpsadbwz128rrikz_test() #0 { ret void } + define void @stack_fold_vdbpsadbwz256rmikz_vdbpsadbwz256rrikz_test() #0 { ret void } + define void @stack_fold_vdbpsadbwzrmikz_vdbpsadbwzrrikz_test() #0 { ret void } + define void @stack_fold_vexp2pdmbk_vexp2pdrbk_test() #0 { ret void } + define void @stack_fold_vexp2pdmk_vexp2pdrk_test() #0 { ret void } + define void @stack_fold_vexp2psmbk_vexp2psrbk_test() #0 { ret void } + define void @stack_fold_vexp2psmk_vexp2psrk_test() #0 { ret void } + define void @stack_fold_vinsertf32x8zrmkz_vinsertf32x8zrrkz_test() #0 { ret void } + define void @stack_fold_vinsertf64x2z256rmkz_vinsertf64x2z256rrkz_test() #0 { ret void } + define void @stack_fold_vinsertf64x2zrmkz_vinsertf64x2zrrkz_test() #0 { ret void } + define void @stack_fold_vinserti32x8zrmkz_vinserti32x8zrrkz_test() #0 { ret void } + define void @stack_fold_vinserti64x2z256rmkz_vinserti64x2z256rrkz_test() #0 { ret void } + define void @stack_fold_vinserti64x2zrmkz_vinserti64x2zrrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu16z128rmk_vmovdqu16z128rrk_test() #0 { ret void } + define void @stack_fold_vmovdqu16z256rmk_vmovdqu16z256rrk_test() #0 { ret void } + define void @stack_fold_vmovdqu16zrmk_vmovdqu16zrrk_test() #0 { ret void } + define void @stack_fold_vmovdqu8z128rmk_vmovdqu8z128rrk_test() #0 { ret void } + define void @stack_fold_vmovdqu8z256rmk_vmovdqu8z256rrk_test() #0 { ret void } + define void @stack_fold_vmovdqu8zrmk_vmovdqu8zrrk_test() #0 { ret void } + define void @stack_fold_vorpdz128rmkz_vorpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vorpdz256rmkz_vorpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vorpdzrmkz_vorpdzrrkz_test() #0 { ret void } + define void @stack_fold_vorpsz128rmkz_vorpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vorpsz256rmkz_vorpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vorpszrmkz_vorpszrrkz_test() #0 { ret void } + define void @stack_fold_vpabsbz128rmk_vpabsbz128rrk_test() #0 { ret void } + define void @stack_fold_vpabsbz256rmk_vpabsbz256rrk_test() #0 { ret void } + define void @stack_fold_vpabsbzrmk_vpabsbzrrk_test() #0 { ret void } + define void @stack_fold_vpabswz128rmk_vpabswz128rrk_test() #0 { ret void } + define void @stack_fold_vpabswz256rmk_vpabswz256rrk_test() #0 { ret void } + define void @stack_fold_vpabswzrmk_vpabswzrrk_test() #0 { ret void } + define void @stack_fold_vpackssdwz128rmkz_vpackssdwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpackssdwz256rmkz_vpackssdwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpackssdwzrmkz_vpackssdwzrrkz_test() #0 { ret void } + define void @stack_fold_vpacksswbz128rmkz_vpacksswbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpacksswbz256rmkz_vpacksswbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpacksswbzrmkz_vpacksswbzrrkz_test() #0 { ret void } + define void @stack_fold_vpackusdwz128rmkz_vpackusdwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpackusdwz256rmkz_vpackusdwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpackusdwzrmkz_vpackusdwzrrkz_test() #0 { ret void } + define void @stack_fold_vpackuswbz128rmkz_vpackuswbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpackuswbz256rmkz_vpackuswbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpackuswbzrmkz_vpackuswbzrrkz_test() #0 { ret void } + define void @stack_fold_vpaddbz128rmkz_vpaddbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpaddbz256rmkz_vpaddbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpaddbzrmkz_vpaddbzrrkz_test() #0 { ret void } + define void @stack_fold_vpaddsbz128rmkz_vpaddsbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpaddsbz256rmkz_vpaddsbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpaddsbzrmkz_vpaddsbzrrkz_test() #0 { ret void } + define void @stack_fold_vpaddswz128rmkz_vpaddswz128rrkz_test() #0 { ret void } + define void @stack_fold_vpaddswz256rmkz_vpaddswz256rrkz_test() #0 { ret void } + define void @stack_fold_vpaddswzrmkz_vpaddswzrrkz_test() #0 { ret void } + define void @stack_fold_vpaddusbz128rmkz_vpaddusbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpaddusbz256rmkz_vpaddusbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpaddusbzrmkz_vpaddusbzrrkz_test() #0 { ret void } + define void @stack_fold_vpadduswz128rmkz_vpadduswz128rrkz_test() #0 { ret void } + define void @stack_fold_vpadduswz256rmkz_vpadduswz256rrkz_test() #0 { ret void } + define void @stack_fold_vpadduswzrmkz_vpadduswzrrkz_test() #0 { ret void } + define void @stack_fold_vpaddwz128rmkz_vpaddwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpaddwz256rmkz_vpaddwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpaddwzrmkz_vpaddwzrrkz_test() #0 { ret void } + define void @stack_fold_vpalignrz128rmikz_vpalignrz128rrikz_test() #0 { ret void } + define void @stack_fold_vpalignrz256rmikz_vpalignrz256rrikz_test() #0 { ret void } + define void @stack_fold_vpalignrzrmikz_vpalignrzrrikz_test() #0 { ret void } + define void @stack_fold_vpavgbz128rmkz_vpavgbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpavgbz256rmkz_vpavgbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpavgbzrmkz_vpavgbzrrkz_test() #0 { ret void } + define void @stack_fold_vpavgwz128rmkz_vpavgwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpavgwz256rmkz_vpavgwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpavgwzrmkz_vpavgwzrrkz_test() #0 { ret void } + define void @stack_fold_vpblendmbz128rmk_vpblendmbz128rrk_test() #0 { ret void } + define void @stack_fold_vpblendmbz128rmkz_vpblendmbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpblendmbz256rmk_vpblendmbz256rrk_test() #0 { ret void } + define void @stack_fold_vpblendmbz256rmkz_vpblendmbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpblendmbzrmk_vpblendmbzrrk_test() #0 { ret void } + define void @stack_fold_vpblendmbzrmkz_vpblendmbzrrkz_test() #0 { ret void } + define void @stack_fold_vpblendmwz128rmk_vpblendmwz128rrk_test() #0 { ret void } + define void @stack_fold_vpblendmwz128rmkz_vpblendmwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpblendmwz256rmk_vpblendmwz256rrk_test() #0 { ret void } + define void @stack_fold_vpblendmwz256rmkz_vpblendmwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpblendmwzrmk_vpblendmwzrrk_test() #0 { ret void } + define void @stack_fold_vpblendmwzrmkz_vpblendmwzrrkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastbz128mk_vpbroadcastbz128rk_test() #0 { ret void } + define void @stack_fold_vpbroadcastbz256mk_vpbroadcastbz256rk_test() #0 { ret void } + define void @stack_fold_vpbroadcastbzmk_vpbroadcastbzrk_test() #0 { ret void } + define void @stack_fold_vpbroadcastwz128mk_vpbroadcastwz128rk_test() #0 { ret void } + define void @stack_fold_vpbroadcastwz256mk_vpbroadcastwz256rk_test() #0 { ret void } + define void @stack_fold_vpbroadcastwzmk_vpbroadcastwzrk_test() #0 { ret void } + define void @stack_fold_vpcmpbz128rmik_vpcmpbz128rrik_test() #0 { ret void } + define void @stack_fold_vpcmpbz128rmik_alt_vpcmpbz128rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpbz256rmik_vpcmpbz256rrik_test() #0 { ret void } + define void @stack_fold_vpcmpbz256rmik_alt_vpcmpbz256rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpbzrmik_vpcmpbzrrik_test() #0 { ret void } + define void @stack_fold_vpcmpbzrmik_alt_vpcmpbzrrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpeqbz128rmk_vpcmpeqbz128rrk_test() #0 { ret void } + define void @stack_fold_vpcmpeqbz256rmk_vpcmpeqbz256rrk_test() #0 { ret void } + define void @stack_fold_vpcmpeqbzrmk_vpcmpeqbzrrk_test() #0 { ret void } + define void @stack_fold_vpcmpeqwz128rmk_vpcmpeqwz128rrk_test() #0 { ret void } + define void @stack_fold_vpcmpeqwz256rmk_vpcmpeqwz256rrk_test() #0 { ret void } + define void @stack_fold_vpcmpeqwzrmk_vpcmpeqwzrrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtbz128rmk_vpcmpgtbz128rrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtbz256rmk_vpcmpgtbz256rrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtbzrmk_vpcmpgtbzrrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtwz128rmk_vpcmpgtwz128rrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtwz256rmk_vpcmpgtwz256rrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtwzrmk_vpcmpgtwzrrk_test() #0 { ret void } + define void @stack_fold_vpcmpubz128rmik_vpcmpubz128rrik_test() #0 { ret void } + define void @stack_fold_vpcmpubz128rmik_alt_vpcmpubz128rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpubz256rmik_vpcmpubz256rrik_test() #0 { ret void } + define void @stack_fold_vpcmpubz256rmik_alt_vpcmpubz256rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpubzrmik_vpcmpubzrrik_test() #0 { ret void } + define void @stack_fold_vpcmpubzrmik_alt_vpcmpubzrrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuwz128rmik_vpcmpuwz128rrik_test() #0 { ret void } + define void @stack_fold_vpcmpuwz128rmik_alt_vpcmpuwz128rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuwz256rmik_vpcmpuwz256rrik_test() #0 { ret void } + define void @stack_fold_vpcmpuwz256rmik_alt_vpcmpuwz256rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuwzrmik_vpcmpuwzrrik_test() #0 { ret void } + define void @stack_fold_vpcmpuwzrmik_alt_vpcmpuwzrrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpwz128rmik_vpcmpwz128rrik_test() #0 { ret void } + define void @stack_fold_vpcmpwz128rmik_alt_vpcmpwz128rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpwz256rmik_vpcmpwz256rrik_test() #0 { ret void } + define void @stack_fold_vpcmpwz256rmik_alt_vpcmpwz256rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpwzrmik_vpcmpwzrrik_test() #0 { ret void } + define void @stack_fold_vpcmpwzrmik_alt_vpcmpwzrrik_alt_test() #0 { ret void } + define void @stack_fold_vpconflictdz128rmk_vpconflictdz128rrk_test() #0 { ret void } + define void @stack_fold_vpconflictdz256rmk_vpconflictdz256rrk_test() #0 { ret void } + define void @stack_fold_vpconflictdzrmk_vpconflictdzrrk_test() #0 { ret void } + define void @stack_fold_vpconflictqz128rmk_vpconflictqz128rrk_test() #0 { ret void } + define void @stack_fold_vpconflictqz256rmk_vpconflictqz256rrk_test() #0 { ret void } + define void @stack_fold_vpconflictqzrmk_vpconflictqzrrk_test() #0 { ret void } + define void @stack_fold_vpermbz128rmkz_vpermbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpermbz256rmkz_vpermbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpermbzrmkz_vpermbzrrkz_test() #0 { ret void } + define void @stack_fold_vpermi2b128rm_vpermi2b128rr_test() #0 { ret void } + define void @stack_fold_vpermi2b256rm_vpermi2b256rr_test() #0 { ret void } + define void @stack_fold_vpermi2brm_vpermi2brr_test() #0 { ret void } + define void @stack_fold_vpermi2w128rm_vpermi2w128rr_test() #0 { ret void } + define void @stack_fold_vpermi2w256rm_vpermi2w256rr_test() #0 { ret void } + define void @stack_fold_vpermi2wrm_vpermi2wrr_test() #0 { ret void } + define void @stack_fold_vpermt2b128rm_vpermt2b128rr_test() #0 { ret void } + define void @stack_fold_vpermt2b256rm_vpermt2b256rr_test() #0 { ret void } + define void @stack_fold_vpermt2brm_vpermt2brr_test() #0 { ret void } + define void @stack_fold_vpermt2w128rm_vpermt2w128rr_test() #0 { ret void } + define void @stack_fold_vpermt2w256rm_vpermt2w256rr_test() #0 { ret void } + define void @stack_fold_vpermt2wrm_vpermt2wrr_test() #0 { ret void } + define void @stack_fold_vpermwz128rmkz_vpermwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpermwz256rmkz_vpermwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpermwzrmkz_vpermwzrrkz_test() #0 { ret void } + define void @stack_fold_vplzcntdz128rmk_vplzcntdz128rrk_test() #0 { ret void } + define void @stack_fold_vplzcntdz256rmk_vplzcntdz256rrk_test() #0 { ret void } + define void @stack_fold_vplzcntdzrmk_vplzcntdzrrk_test() #0 { ret void } + define void @stack_fold_vplzcntqz128rmk_vplzcntqz128rrk_test() #0 { ret void } + define void @stack_fold_vplzcntqz256rmk_vplzcntqz256rrk_test() #0 { ret void } + define void @stack_fold_vplzcntqzrmk_vplzcntqzrrk_test() #0 { ret void } + define void @stack_fold_vpmadd52huqz128m_vpmadd52huqz128r_test() #0 { ret void } + define void @stack_fold_vpmadd52huqz256m_vpmadd52huqz256r_test() #0 { ret void } + define void @stack_fold_vpmadd52huqzm_vpmadd52huqzr_test() #0 { ret void } + define void @stack_fold_vpmadd52luqz128m_vpmadd52luqz128r_test() #0 { ret void } + define void @stack_fold_vpmadd52luqz256m_vpmadd52luqz256r_test() #0 { ret void } + define void @stack_fold_vpmadd52luqzm_vpmadd52luqzr_test() #0 { ret void } + define void @stack_fold_vpmaddubswz128rmkz_vpmaddubswz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmaddubswz256rmkz_vpmaddubswz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmaddubswzrmkz_vpmaddubswzrrkz_test() #0 { ret void } + define void @stack_fold_vpmaddwdz128rmkz_vpmaddwdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmaddwdz256rmkz_vpmaddwdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmaddwdzrmkz_vpmaddwdzrrkz_test() #0 { ret void } + define void @stack_fold_vpmaxsbz128rmkz_vpmaxsbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxsbz256rmkz_vpmaxsbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxsbzrmkz_vpmaxsbzrrkz_test() #0 { ret void } + define void @stack_fold_vpmaxswz128rmkz_vpmaxswz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxswz256rmkz_vpmaxswz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxswzrmkz_vpmaxswzrrkz_test() #0 { ret void } + define void @stack_fold_vpmaxubz128rmkz_vpmaxubz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxubz256rmkz_vpmaxubz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxubzrmkz_vpmaxubzrrkz_test() #0 { ret void } + define void @stack_fold_vpmaxuwz128rmkz_vpmaxuwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxuwz256rmkz_vpmaxuwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxuwzrmkz_vpmaxuwzrrkz_test() #0 { ret void } + define void @stack_fold_vpminsbz128rmkz_vpminsbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpminsbz256rmkz_vpminsbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpminsbzrmkz_vpminsbzrrkz_test() #0 { ret void } + define void @stack_fold_vpminswz128rmkz_vpminswz128rrkz_test() #0 { ret void } + define void @stack_fold_vpminswz256rmkz_vpminswz256rrkz_test() #0 { ret void } + define void @stack_fold_vpminswzrmkz_vpminswzrrkz_test() #0 { ret void } + define void @stack_fold_vpminubz128rmkz_vpminubz128rrkz_test() #0 { ret void } + define void @stack_fold_vpminubz256rmkz_vpminubz256rrkz_test() #0 { ret void } + define void @stack_fold_vpminubzrmkz_vpminubzrrkz_test() #0 { ret void } + define void @stack_fold_vpminuwz128rmkz_vpminuwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpminuwz256rmkz_vpminuwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpminuwzrmkz_vpminuwzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxbwz128rmk_vpmovsxbwz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovsxbwz256rmk_vpmovsxbwz256rrk_test() #0 { ret void } + define void @stack_fold_vpmovsxbwzrmk_vpmovsxbwzrrk_test() #0 { ret void } + define void @stack_fold_vpmovzxbwz128rmk_vpmovzxbwz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxbwz256rmk_vpmovzxbwz256rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxbwzrmk_vpmovzxbwzrrk_test() #0 { ret void } + define void @stack_fold_vpmulhrswz128rmkz_vpmulhrswz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmulhrswz256rmkz_vpmulhrswz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmulhrswzrmkz_vpmulhrswzrrkz_test() #0 { ret void } + define void @stack_fold_vpmulhuwz128rmkz_vpmulhuwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmulhuwz256rmkz_vpmulhuwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmulhuwzrmkz_vpmulhuwzrrkz_test() #0 { ret void } + define void @stack_fold_vpmulhwz128rmkz_vpmulhwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmulhwz256rmkz_vpmulhwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmulhwzrmkz_vpmulhwzrrkz_test() #0 { ret void } + define void @stack_fold_vpmullqz128rmkz_vpmullqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmullqz256rmkz_vpmullqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmullqzrmkz_vpmullqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmullwz128rmkz_vpmullwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmullwz256rmkz_vpmullwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmullwzrmkz_vpmullwzrrkz_test() #0 { ret void } + define void @stack_fold_vpmultishiftqbz128rmkz_vpmultishiftqbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmultishiftqbz256rmkz_vpmultishiftqbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmultishiftqbzrmkz_vpmultishiftqbzrrkz_test() #0 { ret void } + define void @stack_fold_vpshufbz128rmkz_vpshufbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpshufbz256rmkz_vpshufbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpshufbzrmkz_vpshufbzrrkz_test() #0 { ret void } + define void @stack_fold_vpshufhwz128mik_vpshufhwz128rik_test() #0 { ret void } + define void @stack_fold_vpshufhwz256mik_vpshufhwz256rik_test() #0 { ret void } + define void @stack_fold_vpshufhwzmik_vpshufhwzrik_test() #0 { ret void } + define void @stack_fold_vpshuflwz128mik_vpshuflwz128rik_test() #0 { ret void } + define void @stack_fold_vpshuflwz256mik_vpshuflwz256rik_test() #0 { ret void } + define void @stack_fold_vpshuflwzmik_vpshuflwzrik_test() #0 { ret void } + define void @stack_fold_vpsllvwz128rmkz_vpsllvwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsllvwz256rmkz_vpsllvwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsllvwzrmkz_vpsllvwzrrkz_test() #0 { ret void } + define void @stack_fold_vpsllwz128mik_vpsllwz128rik_test() #0 { ret void } + define void @stack_fold_vpsllwz128rmkz_vpsllwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsllwz256mik_vpsllwz256rik_test() #0 { ret void } + define void @stack_fold_vpsllwz256rmkz_vpsllwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsllwzmik_vpsllwzrik_test() #0 { ret void } + define void @stack_fold_vpsllwzrmkz_vpsllwzrrkz_test() #0 { ret void } + define void @stack_fold_vpsravwz128rmkz_vpsravwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsravwz256rmkz_vpsravwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsravwzrmkz_vpsravwzrrkz_test() #0 { ret void } + define void @stack_fold_vpsrawz128mik_vpsrawz128rik_test() #0 { ret void } + define void @stack_fold_vpsrawz128rmkz_vpsrawz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsrawz256mik_vpsrawz256rik_test() #0 { ret void } + define void @stack_fold_vpsrawz256rmkz_vpsrawz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsrawzmik_vpsrawzrik_test() #0 { ret void } + define void @stack_fold_vpsrawzrmkz_vpsrawzrrkz_test() #0 { ret void } + define void @stack_fold_vpsrlvwz128rmkz_vpsrlvwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsrlvwz256rmkz_vpsrlvwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsrlvwzrmkz_vpsrlvwzrrkz_test() #0 { ret void } + define void @stack_fold_vpsrlwz128mik_vpsrlwz128rik_test() #0 { ret void } + define void @stack_fold_vpsrlwz128rmkz_vpsrlwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsrlwz256mik_vpsrlwz256rik_test() #0 { ret void } + define void @stack_fold_vpsrlwz256rmkz_vpsrlwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsrlwzmik_vpsrlwzrik_test() #0 { ret void } + define void @stack_fold_vpsrlwzrmkz_vpsrlwzrrkz_test() #0 { ret void } + define void @stack_fold_vpsubbz128rmkz_vpsubbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsubbz256rmkz_vpsubbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsubbzrmkz_vpsubbzrrkz_test() #0 { ret void } + define void @stack_fold_vpsubsbz128rmkz_vpsubsbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsubsbz256rmkz_vpsubsbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsubsbzrmkz_vpsubsbzrrkz_test() #0 { ret void } + define void @stack_fold_vpsubswz128rmkz_vpsubswz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsubswz256rmkz_vpsubswz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsubswzrmkz_vpsubswzrrkz_test() #0 { ret void } + define void @stack_fold_vpsubusbz128rmkz_vpsubusbz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsubusbz256rmkz_vpsubusbz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsubusbzrmkz_vpsubusbzrrkz_test() #0 { ret void } + define void @stack_fold_vpsubuswz128rmkz_vpsubuswz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsubuswz256rmkz_vpsubuswz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsubuswzrmkz_vpsubuswzrrkz_test() #0 { ret void } + define void @stack_fold_vpsubwz128rmkz_vpsubwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsubwz256rmkz_vpsubwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsubwzrmkz_vpsubwzrrkz_test() #0 { ret void } + define void @stack_fold_vptestmbz128rmk_vptestmbz128rrk_test() #0 { ret void } + define void @stack_fold_vptestmbz256rmk_vptestmbz256rrk_test() #0 { ret void } + define void @stack_fold_vptestmbzrmk_vptestmbzrrk_test() #0 { ret void } + define void @stack_fold_vptestmwz128rmk_vptestmwz128rrk_test() #0 { ret void } + define void @stack_fold_vptestmwz256rmk_vptestmwz256rrk_test() #0 { ret void } + define void @stack_fold_vptestmwzrmk_vptestmwzrrk_test() #0 { ret void } + define void @stack_fold_vptestnmbz128rmk_vptestnmbz128rrk_test() #0 { ret void } + define void @stack_fold_vptestnmbz256rmk_vptestnmbz256rrk_test() #0 { ret void } + define void @stack_fold_vptestnmbzrmk_vptestnmbzrrk_test() #0 { ret void } + define void @stack_fold_vptestnmwz128rmk_vptestnmwz128rrk_test() #0 { ret void } + define void @stack_fold_vptestnmwz256rmk_vptestnmwz256rrk_test() #0 { ret void } + define void @stack_fold_vptestnmwzrmk_vptestnmwzrrk_test() #0 { ret void } + define void @stack_fold_vpunpckhbwz128rmkz_vpunpckhbwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpunpckhbwz256rmkz_vpunpckhbwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpunpckhbwzrmkz_vpunpckhbwzrrkz_test() #0 { ret void } + define void @stack_fold_vpunpckhwdz128rmkz_vpunpckhwdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpunpckhwdz256rmkz_vpunpckhwdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpunpckhwdzrmkz_vpunpckhwdzrrkz_test() #0 { ret void } + define void @stack_fold_vpunpcklbwz128rmkz_vpunpcklbwz128rrkz_test() #0 { ret void } + define void @stack_fold_vpunpcklbwz256rmkz_vpunpcklbwz256rrkz_test() #0 { ret void } + define void @stack_fold_vpunpcklbwzrmkz_vpunpcklbwzrrkz_test() #0 { ret void } + define void @stack_fold_vpunpcklwdz128rmkz_vpunpcklwdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpunpcklwdz256rmkz_vpunpcklwdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpunpcklwdzrmkz_vpunpcklwdzrrkz_test() #0 { ret void } + define void @stack_fold_vrangepdz128rmikz_vrangepdz128rrikz_test() #0 { ret void } + define void @stack_fold_vrangepdz256rmikz_vrangepdz256rrikz_test() #0 { ret void } + define void @stack_fold_vrangepdzrmbikz_vrangepdzrribkz_test() #0 { ret void } + define void @stack_fold_vrangepdzrmikz_vrangepdzrrikz_test() #0 { ret void } + define void @stack_fold_vrangepsz128rmikz_vrangepsz128rrikz_test() #0 { ret void } + define void @stack_fold_vrangepsz256rmikz_vrangepsz256rrikz_test() #0 { ret void } + define void @stack_fold_vrangepszrmbikz_vrangepszrribkz_test() #0 { ret void } + define void @stack_fold_vrangepszrmikz_vrangepszrrikz_test() #0 { ret void } + define void @stack_fold_vrangesdz128rmikz_vrangesdz128rrikz_test() #0 { ret void } + define void @stack_fold_vrangessz128rmikz_vrangessz128rrikz_test() #0 { ret void } + define void @stack_fold_vrcp28pdmbk_vrcp28pdrbk_test() #0 { ret void } + define void @stack_fold_vrcp28pdmk_vrcp28pdrk_test() #0 { ret void } + define void @stack_fold_vrcp28psmbk_vrcp28psrbk_test() #0 { ret void } + define void @stack_fold_vrcp28psmk_vrcp28psrk_test() #0 { ret void } + define void @stack_fold_vrcp28sdmkz_vrcp28sdrkz_test() #0 { ret void } + define void @stack_fold_vrcp28ssmkz_vrcp28ssrkz_test() #0 { ret void } + define void @stack_fold_vreducepdz128rmik_vreducepdz128rrik_test() #0 { ret void } + define void @stack_fold_vreducepdz256rmik_vreducepdz256rrik_test() #0 { ret void } + define void @stack_fold_vreducepdzrmbik_vreducepdzrribk_test() #0 { ret void } + define void @stack_fold_vreducepdzrmik_vreducepdzrrik_test() #0 { ret void } + define void @stack_fold_vreducepsz128rmik_vreducepsz128rrik_test() #0 { ret void } + define void @stack_fold_vreducepsz256rmik_vreducepsz256rrik_test() #0 { ret void } + define void @stack_fold_vreducepszrmbik_vreducepszrribk_test() #0 { ret void } + define void @stack_fold_vreducepszrmik_vreducepszrrik_test() #0 { ret void } + define void @stack_fold_vreducesdz128rmikz_vreducesdz128rrikz_test() #0 { ret void } + define void @stack_fold_vreducessz128rmikz_vreducessz128rrikz_test() #0 { ret void } + define void @stack_fold_vrsqrt28pdmbk_vrsqrt28pdrbk_test() #0 { ret void } + define void @stack_fold_vrsqrt28pdmk_vrsqrt28pdrk_test() #0 { ret void } + define void @stack_fold_vrsqrt28psmbk_vrsqrt28psrbk_test() #0 { ret void } + define void @stack_fold_vrsqrt28psmk_vrsqrt28psrk_test() #0 { ret void } + define void @stack_fold_vrsqrt28sdmkz_vrsqrt28sdrkz_test() #0 { ret void } + define void @stack_fold_vrsqrt28ssmkz_vrsqrt28ssrkz_test() #0 { ret void } + define void @stack_fold_vxorpdz128rmkz_vxorpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vxorpdz256rmkz_vxorpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vxorpdzrmkz_vxorpdzrrkz_test() #0 { ret void } + define void @stack_fold_vxorpsz128rmkz_vxorpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vxorpsz256rmkz_vxorpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vxorpszrmkz_vxorpszrrkz_test() #0 { ret void } + define void @stack_fold_vandnpdz128rmk_vandnpdz128rrk_test() #0 { ret void } + define void @stack_fold_vandnpdz256rmk_vandnpdz256rrk_test() #0 { ret void } + define void @stack_fold_vandnpdzrmk_vandnpdzrrk_test() #0 { ret void } + define void @stack_fold_vandnpsz128rmk_vandnpsz128rrk_test() #0 { ret void } + define void @stack_fold_vandnpsz256rmk_vandnpsz256rrk_test() #0 { ret void } + define void @stack_fold_vandnpszrmk_vandnpszrrk_test() #0 { ret void } + define void @stack_fold_vandpdz128rmk_vandpdz128rrk_test() #0 { ret void } + define void @stack_fold_vandpdz256rmk_vandpdz256rrk_test() #0 { ret void } + define void @stack_fold_vandpdzrmk_vandpdzrrk_test() #0 { ret void } + define void @stack_fold_vandpsz128rmk_vandpsz128rrk_test() #0 { ret void } + define void @stack_fold_vandpsz256rmk_vandpsz256rrk_test() #0 { ret void } + define void @stack_fold_vandpszrmk_vandpszrrk_test() #0 { ret void } + define void @stack_fold_vdbpsadbwz128rmik_vdbpsadbwz128rrik_test() #0 { ret void } + define void @stack_fold_vdbpsadbwz256rmik_vdbpsadbwz256rrik_test() #0 { ret void } + define void @stack_fold_vdbpsadbwzrmik_vdbpsadbwzrrik_test() #0 { ret void } + define void @stack_fold_vinsertf32x8zrmk_vinsertf32x8zrrk_test() #0 { ret void } + define void @stack_fold_vinsertf64x2z256rmk_vinsertf64x2z256rrk_test() #0 { ret void } + define void @stack_fold_vinsertf64x2zrmk_vinsertf64x2zrrk_test() #0 { ret void } + define void @stack_fold_vinserti32x8zrmk_vinserti32x8zrrk_test() #0 { ret void } + define void @stack_fold_vinserti64x2z256rmk_vinserti64x2z256rrk_test() #0 { ret void } + define void @stack_fold_vinserti64x2zrmk_vinserti64x2zrrk_test() #0 { ret void } + define void @stack_fold_vorpdz128rmk_vorpdz128rrk_test() #0 { ret void } + define void @stack_fold_vorpdz256rmk_vorpdz256rrk_test() #0 { ret void } + define void @stack_fold_vorpdzrmk_vorpdzrrk_test() #0 { ret void } + define void @stack_fold_vorpsz128rmk_vorpsz128rrk_test() #0 { ret void } + define void @stack_fold_vorpsz256rmk_vorpsz256rrk_test() #0 { ret void } + define void @stack_fold_vorpszrmk_vorpszrrk_test() #0 { ret void } + define void @stack_fold_vpackssdwz128rmk_vpackssdwz128rrk_test() #0 { ret void } + define void @stack_fold_vpackssdwz256rmk_vpackssdwz256rrk_test() #0 { ret void } + define void @stack_fold_vpackssdwzrmk_vpackssdwzrrk_test() #0 { ret void } + define void @stack_fold_vpacksswbz128rmk_vpacksswbz128rrk_test() #0 { ret void } + define void @stack_fold_vpacksswbz256rmk_vpacksswbz256rrk_test() #0 { ret void } + define void @stack_fold_vpacksswbzrmk_vpacksswbzrrk_test() #0 { ret void } + define void @stack_fold_vpackusdwz128rmk_vpackusdwz128rrk_test() #0 { ret void } + define void @stack_fold_vpackusdwz256rmk_vpackusdwz256rrk_test() #0 { ret void } + define void @stack_fold_vpackusdwzrmk_vpackusdwzrrk_test() #0 { ret void } + define void @stack_fold_vpackuswbz128rmk_vpackuswbz128rrk_test() #0 { ret void } + define void @stack_fold_vpackuswbz256rmk_vpackuswbz256rrk_test() #0 { ret void } + define void @stack_fold_vpackuswbzrmk_vpackuswbzrrk_test() #0 { ret void } + define void @stack_fold_vpaddbz128rmk_vpaddbz128rrk_test() #0 { ret void } + define void @stack_fold_vpaddbz256rmk_vpaddbz256rrk_test() #0 { ret void } + define void @stack_fold_vpaddbzrmk_vpaddbzrrk_test() #0 { ret void } + define void @stack_fold_vpaddsbz128rmk_vpaddsbz128rrk_test() #0 { ret void } + define void @stack_fold_vpaddsbz256rmk_vpaddsbz256rrk_test() #0 { ret void } + define void @stack_fold_vpaddsbzrmk_vpaddsbzrrk_test() #0 { ret void } + define void @stack_fold_vpaddswz128rmk_vpaddswz128rrk_test() #0 { ret void } + define void @stack_fold_vpaddswz256rmk_vpaddswz256rrk_test() #0 { ret void } + define void @stack_fold_vpaddswzrmk_vpaddswzrrk_test() #0 { ret void } + define void @stack_fold_vpaddusbz128rmk_vpaddusbz128rrk_test() #0 { ret void } + define void @stack_fold_vpaddusbz256rmk_vpaddusbz256rrk_test() #0 { ret void } + define void @stack_fold_vpaddusbzrmk_vpaddusbzrrk_test() #0 { ret void } + define void @stack_fold_vpadduswz128rmk_vpadduswz128rrk_test() #0 { ret void } + define void @stack_fold_vpadduswz256rmk_vpadduswz256rrk_test() #0 { ret void } + define void @stack_fold_vpadduswzrmk_vpadduswzrrk_test() #0 { ret void } + define void @stack_fold_vpaddwz128rmk_vpaddwz128rrk_test() #0 { ret void } + define void @stack_fold_vpaddwz256rmk_vpaddwz256rrk_test() #0 { ret void } + define void @stack_fold_vpaddwzrmk_vpaddwzrrk_test() #0 { ret void } + define void @stack_fold_vpalignrz128rmik_vpalignrz128rrik_test() #0 { ret void } + define void @stack_fold_vpalignrz256rmik_vpalignrz256rrik_test() #0 { ret void } + define void @stack_fold_vpalignrzrmik_vpalignrzrrik_test() #0 { ret void } + define void @stack_fold_vpavgbz128rmk_vpavgbz128rrk_test() #0 { ret void } + define void @stack_fold_vpavgbz256rmk_vpavgbz256rrk_test() #0 { ret void } + define void @stack_fold_vpavgbzrmk_vpavgbzrrk_test() #0 { ret void } + define void @stack_fold_vpavgwz128rmk_vpavgwz128rrk_test() #0 { ret void } + define void @stack_fold_vpavgwz256rmk_vpavgwz256rrk_test() #0 { ret void } + define void @stack_fold_vpavgwzrmk_vpavgwzrrk_test() #0 { ret void } + define void @stack_fold_vpermbz128rmk_vpermbz128rrk_test() #0 { ret void } + define void @stack_fold_vpermbz256rmk_vpermbz256rrk_test() #0 { ret void } + define void @stack_fold_vpermbzrmk_vpermbzrrk_test() #0 { ret void } + define void @stack_fold_vpermi2b128rmk_vpermi2b128rrk_test() #0 { ret void } + define void @stack_fold_vpermi2b128rmkz_vpermi2b128rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2b256rmk_vpermi2b256rrk_test() #0 { ret void } + define void @stack_fold_vpermi2b256rmkz_vpermi2b256rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2brmk_vpermi2brrk_test() #0 { ret void } + define void @stack_fold_vpermi2brmkz_vpermi2brrkz_test() #0 { ret void } + define void @stack_fold_vpermi2w128rmk_vpermi2w128rrk_test() #0 { ret void } + define void @stack_fold_vpermi2w128rmkz_vpermi2w128rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2w256rmk_vpermi2w256rrk_test() #0 { ret void } + define void @stack_fold_vpermi2w256rmkz_vpermi2w256rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2wrmk_vpermi2wrrk_test() #0 { ret void } + define void @stack_fold_vpermi2wrmkz_vpermi2wrrkz_test() #0 { ret void } + define void @stack_fold_vpermt2b128rmk_vpermt2b128rrk_test() #0 { ret void } + define void @stack_fold_vpermt2b128rmkz_vpermt2b128rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2b256rmk_vpermt2b256rrk_test() #0 { ret void } + define void @stack_fold_vpermt2b256rmkz_vpermt2b256rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2brmk_vpermt2brrk_test() #0 { ret void } + define void @stack_fold_vpermt2brmkz_vpermt2brrkz_test() #0 { ret void } + define void @stack_fold_vpermt2w128rmk_vpermt2w128rrk_test() #0 { ret void } + define void @stack_fold_vpermt2w128rmkz_vpermt2w128rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2w256rmk_vpermt2w256rrk_test() #0 { ret void } + define void @stack_fold_vpermt2w256rmkz_vpermt2w256rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2wrmk_vpermt2wrrk_test() #0 { ret void } + define void @stack_fold_vpermt2wrmkz_vpermt2wrrkz_test() #0 { ret void } + define void @stack_fold_vpermwz128rmk_vpermwz128rrk_test() #0 { ret void } + define void @stack_fold_vpermwz256rmk_vpermwz256rrk_test() #0 { ret void } + define void @stack_fold_vpermwzrmk_vpermwzrrk_test() #0 { ret void } + define void @stack_fold_vpmadd52huqz128mk_vpmadd52huqz128rk_test() #0 { ret void } + define void @stack_fold_vpmadd52huqz128mkz_vpmadd52huqz128rkz_test() #0 { ret void } + define void @stack_fold_vpmadd52huqz256mk_vpmadd52huqz256rk_test() #0 { ret void } + define void @stack_fold_vpmadd52huqz256mkz_vpmadd52huqz256rkz_test() #0 { ret void } + define void @stack_fold_vpmadd52huqzmk_vpmadd52huqzrk_test() #0 { ret void } + define void @stack_fold_vpmadd52huqzmkz_vpmadd52huqzrkz_test() #0 { ret void } + define void @stack_fold_vpmadd52luqz128mk_vpmadd52luqz128rk_test() #0 { ret void } + define void @stack_fold_vpmadd52luqz128mkz_vpmadd52luqz128rkz_test() #0 { ret void } + define void @stack_fold_vpmadd52luqz256mk_vpmadd52luqz256rk_test() #0 { ret void } + define void @stack_fold_vpmadd52luqz256mkz_vpmadd52luqz256rkz_test() #0 { ret void } + define void @stack_fold_vpmadd52luqzmk_vpmadd52luqzrk_test() #0 { ret void } + define void @stack_fold_vpmadd52luqzmkz_vpmadd52luqzrkz_test() #0 { ret void } + define void @stack_fold_vpmaddubswz128rmk_vpmaddubswz128rrk_test() #0 { ret void } + define void @stack_fold_vpmaddubswz256rmk_vpmaddubswz256rrk_test() #0 { ret void } + define void @stack_fold_vpmaddubswzrmk_vpmaddubswzrrk_test() #0 { ret void } + define void @stack_fold_vpmaddwdz128rmk_vpmaddwdz128rrk_test() #0 { ret void } + define void @stack_fold_vpmaddwdz256rmk_vpmaddwdz256rrk_test() #0 { ret void } + define void @stack_fold_vpmaddwdzrmk_vpmaddwdzrrk_test() #0 { ret void } + define void @stack_fold_vpmaxsbz128rmk_vpmaxsbz128rrk_test() #0 { ret void } + define void @stack_fold_vpmaxsbz256rmk_vpmaxsbz256rrk_test() #0 { ret void } + define void @stack_fold_vpmaxsbzrmk_vpmaxsbzrrk_test() #0 { ret void } + define void @stack_fold_vpmaxswz128rmk_vpmaxswz128rrk_test() #0 { ret void } + define void @stack_fold_vpmaxswz256rmk_vpmaxswz256rrk_test() #0 { ret void } + define void @stack_fold_vpmaxswzrmk_vpmaxswzrrk_test() #0 { ret void } + define void @stack_fold_vpmaxubz128rmk_vpmaxubz128rrk_test() #0 { ret void } + define void @stack_fold_vpmaxubz256rmk_vpmaxubz256rrk_test() #0 { ret void } + define void @stack_fold_vpmaxubzrmk_vpmaxubzrrk_test() #0 { ret void } + define void @stack_fold_vpmaxuwz128rmk_vpmaxuwz128rrk_test() #0 { ret void } + define void @stack_fold_vpmaxuwz256rmk_vpmaxuwz256rrk_test() #0 { ret void } + define void @stack_fold_vpmaxuwzrmk_vpmaxuwzrrk_test() #0 { ret void } + define void @stack_fold_vpminsbz128rmk_vpminsbz128rrk_test() #0 { ret void } + define void @stack_fold_vpminsbz256rmk_vpminsbz256rrk_test() #0 { ret void } + define void @stack_fold_vpminsbzrmk_vpminsbzrrk_test() #0 { ret void } + define void @stack_fold_vpminswz128rmk_vpminswz128rrk_test() #0 { ret void } + define void @stack_fold_vpminswz256rmk_vpminswz256rrk_test() #0 { ret void } + define void @stack_fold_vpminswzrmk_vpminswzrrk_test() #0 { ret void } + define void @stack_fold_vpminubz128rmk_vpminubz128rrk_test() #0 { ret void } + define void @stack_fold_vpminubz256rmk_vpminubz256rrk_test() #0 { ret void } + define void @stack_fold_vpminubzrmk_vpminubzrrk_test() #0 { ret void } + define void @stack_fold_vpminuwz128rmk_vpminuwz128rrk_test() #0 { ret void } + define void @stack_fold_vpminuwz256rmk_vpminuwz256rrk_test() #0 { ret void } + define void @stack_fold_vpminuwzrmk_vpminuwzrrk_test() #0 { ret void } + define void @stack_fold_vpmulhrswz128rmk_vpmulhrswz128rrk_test() #0 { ret void } + define void @stack_fold_vpmulhrswz256rmk_vpmulhrswz256rrk_test() #0 { ret void } + define void @stack_fold_vpmulhrswzrmk_vpmulhrswzrrk_test() #0 { ret void } + define void @stack_fold_vpmulhuwz128rmk_vpmulhuwz128rrk_test() #0 { ret void } + define void @stack_fold_vpmulhuwz256rmk_vpmulhuwz256rrk_test() #0 { ret void } + define void @stack_fold_vpmulhuwzrmk_vpmulhuwzrrk_test() #0 { ret void } + define void @stack_fold_vpmulhwz128rmk_vpmulhwz128rrk_test() #0 { ret void } + define void @stack_fold_vpmulhwz256rmk_vpmulhwz256rrk_test() #0 { ret void } + define void @stack_fold_vpmulhwzrmk_vpmulhwzrrk_test() #0 { ret void } + define void @stack_fold_vpmullqz128rmk_vpmullqz128rrk_test() #0 { ret void } + define void @stack_fold_vpmullqz256rmk_vpmullqz256rrk_test() #0 { ret void } + define void @stack_fold_vpmullqzrmk_vpmullqzrrk_test() #0 { ret void } + define void @stack_fold_vpmullwz128rmk_vpmullwz128rrk_test() #0 { ret void } + define void @stack_fold_vpmullwz256rmk_vpmullwz256rrk_test() #0 { ret void } + define void @stack_fold_vpmullwzrmk_vpmullwzrrk_test() #0 { ret void } + define void @stack_fold_vpmultishiftqbz128rmk_vpmultishiftqbz128rrk_test() #0 { ret void } + define void @stack_fold_vpmultishiftqbz256rmk_vpmultishiftqbz256rrk_test() #0 { ret void } + define void @stack_fold_vpmultishiftqbzrmk_vpmultishiftqbzrrk_test() #0 { ret void } + define void @stack_fold_vpshufbz128rmk_vpshufbz128rrk_test() #0 { ret void } + define void @stack_fold_vpshufbz256rmk_vpshufbz256rrk_test() #0 { ret void } + define void @stack_fold_vpshufbzrmk_vpshufbzrrk_test() #0 { ret void } + define void @stack_fold_vpsllvwz128rmk_vpsllvwz128rrk_test() #0 { ret void } + define void @stack_fold_vpsllvwz256rmk_vpsllvwz256rrk_test() #0 { ret void } + define void @stack_fold_vpsllvwzrmk_vpsllvwzrrk_test() #0 { ret void } + define void @stack_fold_vpsllwz128rmk_vpsllwz128rrk_test() #0 { ret void } + define void @stack_fold_vpsllwz256rmk_vpsllwz256rrk_test() #0 { ret void } + define void @stack_fold_vpsllwzrmk_vpsllwzrrk_test() #0 { ret void } + define void @stack_fold_vpsravwz128rmk_vpsravwz128rrk_test() #0 { ret void } + define void @stack_fold_vpsravwz256rmk_vpsravwz256rrk_test() #0 { ret void } + define void @stack_fold_vpsravwzrmk_vpsravwzrrk_test() #0 { ret void } + define void @stack_fold_vpsrawz128rmk_vpsrawz128rrk_test() #0 { ret void } + define void @stack_fold_vpsrawz256rmk_vpsrawz256rrk_test() #0 { ret void } + define void @stack_fold_vpsrawzrmk_vpsrawzrrk_test() #0 { ret void } + define void @stack_fold_vpsrlvwz128rmk_vpsrlvwz128rrk_test() #0 { ret void } + define void @stack_fold_vpsrlvwz256rmk_vpsrlvwz256rrk_test() #0 { ret void } + define void @stack_fold_vpsrlvwzrmk_vpsrlvwzrrk_test() #0 { ret void } + define void @stack_fold_vpsrlwz128rmk_vpsrlwz128rrk_test() #0 { ret void } + define void @stack_fold_vpsrlwz256rmk_vpsrlwz256rrk_test() #0 { ret void } + define void @stack_fold_vpsrlwzrmk_vpsrlwzrrk_test() #0 { ret void } + define void @stack_fold_vpsubbz128rmk_vpsubbz128rrk_test() #0 { ret void } + define void @stack_fold_vpsubbz256rmk_vpsubbz256rrk_test() #0 { ret void } + define void @stack_fold_vpsubbzrmk_vpsubbzrrk_test() #0 { ret void } + define void @stack_fold_vpsubsbz128rmk_vpsubsbz128rrk_test() #0 { ret void } + define void @stack_fold_vpsubsbz256rmk_vpsubsbz256rrk_test() #0 { ret void } + define void @stack_fold_vpsubsbzrmk_vpsubsbzrrk_test() #0 { ret void } + define void @stack_fold_vpsubswz128rmk_vpsubswz128rrk_test() #0 { ret void } + define void @stack_fold_vpsubswz256rmk_vpsubswz256rrk_test() #0 { ret void } + define void @stack_fold_vpsubswzrmk_vpsubswzrrk_test() #0 { ret void } + define void @stack_fold_vpsubusbz128rmk_vpsubusbz128rrk_test() #0 { ret void } + define void @stack_fold_vpsubusbz256rmk_vpsubusbz256rrk_test() #0 { ret void } + define void @stack_fold_vpsubusbzrmk_vpsubusbzrrk_test() #0 { ret void } + define void @stack_fold_vpsubuswz128rmk_vpsubuswz128rrk_test() #0 { ret void } + define void @stack_fold_vpsubuswz256rmk_vpsubuswz256rrk_test() #0 { ret void } + define void @stack_fold_vpsubuswzrmk_vpsubuswzrrk_test() #0 { ret void } + define void @stack_fold_vpsubwz128rmk_vpsubwz128rrk_test() #0 { ret void } + define void @stack_fold_vpsubwz256rmk_vpsubwz256rrk_test() #0 { ret void } + define void @stack_fold_vpsubwzrmk_vpsubwzrrk_test() #0 { ret void } + define void @stack_fold_vpunpckhbwz128rmk_vpunpckhbwz128rrk_test() #0 { ret void } + define void @stack_fold_vpunpckhbwz256rmk_vpunpckhbwz256rrk_test() #0 { ret void } + define void @stack_fold_vpunpckhbwzrmk_vpunpckhbwzrrk_test() #0 { ret void } + define void @stack_fold_vpunpckhwdz128rmk_vpunpckhwdz128rrk_test() #0 { ret void } + define void @stack_fold_vpunpckhwdz256rmk_vpunpckhwdz256rrk_test() #0 { ret void } + define void @stack_fold_vpunpckhwdzrmk_vpunpckhwdzrrk_test() #0 { ret void } + define void @stack_fold_vpunpcklbwz128rmk_vpunpcklbwz128rrk_test() #0 { ret void } + define void @stack_fold_vpunpcklbwz256rmk_vpunpcklbwz256rrk_test() #0 { ret void } + define void @stack_fold_vpunpcklbwzrmk_vpunpcklbwzrrk_test() #0 { ret void } + define void @stack_fold_vpunpcklwdz128rmk_vpunpcklwdz128rrk_test() #0 { ret void } + define void @stack_fold_vpunpcklwdz256rmk_vpunpcklwdz256rrk_test() #0 { ret void } + define void @stack_fold_vpunpcklwdzrmk_vpunpcklwdzrrk_test() #0 { ret void } + define void @stack_fold_vrangepdz128rmik_vrangepdz128rrik_test() #0 { ret void } + define void @stack_fold_vrangepdz256rmik_vrangepdz256rrik_test() #0 { ret void } + define void @stack_fold_vrangepdzrmbik_vrangepdzrribk_test() #0 { ret void } + define void @stack_fold_vrangepdzrmik_vrangepdzrrik_test() #0 { ret void } + define void @stack_fold_vrangepsz128rmik_vrangepsz128rrik_test() #0 { ret void } + define void @stack_fold_vrangepsz256rmik_vrangepsz256rrik_test() #0 { ret void } + define void @stack_fold_vrangepszrmbik_vrangepszrribk_test() #0 { ret void } + define void @stack_fold_vrangepszrmik_vrangepszrrik_test() #0 { ret void } + define void @stack_fold_vrangesdz128rmik_vrangesdz128rrik_test() #0 { ret void } + define void @stack_fold_vrangessz128rmik_vrangessz128rrik_test() #0 { ret void } + define void @stack_fold_vrcp28sdmk_vrcp28sdrk_test() #0 { ret void } + define void @stack_fold_vrcp28ssmk_vrcp28ssrk_test() #0 { ret void } + define void @stack_fold_vreducesdz128rmik_vreducesdz128rrik_test() #0 { ret void } + define void @stack_fold_vreducessz128rmik_vreducessz128rrik_test() #0 { ret void } + define void @stack_fold_vrsqrt28sdmk_vrsqrt28sdrk_test() #0 { ret void } + define void @stack_fold_vrsqrt28ssmk_vrsqrt28ssrk_test() #0 { ret void } + define void @stack_fold_vxorpdz128rmk_vxorpdz128rrk_test() #0 { ret void } + define void @stack_fold_vxorpdz256rmk_vxorpdz256rrk_test() #0 { ret void } + define void @stack_fold_vxorpdzrmk_vxorpdzrrk_test() #0 { ret void } + define void @stack_fold_vxorpsz128rmk_vxorpsz128rrk_test() #0 { ret void } + define void @stack_fold_vxorpsz256rmk_vxorpsz256rrk_test() #0 { ret void } + define void @stack_fold_vxorpszrmk_vxorpszrrk_test() #0 { ret void } +... +--- +name: stack_fold_vextractf32x8zmr_vextractf32x8zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextractf32x8zmr_vextractf32x8zrr_test + ; CHECK: VEXTRACTF32x8Zmr + %0 = VEXTRACTF32x8Zrr undef %zmm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextractf64x2z256mr_vextractf64x2z256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextractf64x2z256mr_vextractf64x2z256rr_test + ; CHECK: VEXTRACTF64x2Z256mr + %0 = VEXTRACTF64x2Z256rr undef %ymm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextractf64x2zmr_vextractf64x2zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextractf64x2zmr_vextractf64x2zrr_test + ; CHECK: VEXTRACTF64x2Zmr + %0 = VEXTRACTF64x2Zrr undef %zmm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextracti32x8zmr_vextracti32x8zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextracti32x8zmr_vextracti32x8zrr_test + ; CHECK: VEXTRACTI32x8Zmr + %0 = VEXTRACTI32x8Zrr undef %zmm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextracti64x2z256mr_vextracti64x2z256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextracti64x2z256mr_vextracti64x2z256rr_test + ; CHECK: VEXTRACTI64x2Z256mr + %0 = VEXTRACTI64x2Z256rr undef %ymm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextracti64x2zmr_vextracti64x2zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextracti64x2zmr_vextracti64x2zrr_test + ; CHECK: VEXTRACTI64x2Zmr + %0 = VEXTRACTI64x2Zrr undef %zmm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu16z128mr_vmovdqu16z128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu16z128mr_vmovdqu16z128rr_test + ; CHECK: VMOVDQU16Z128mr + %0 = VMOVDQU16Z128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu16z256mr_vmovdqu16z256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu16z256mr_vmovdqu16z256rr_test + ; CHECK: VMOVDQU16Z256mr + %0 = VMOVDQU16Z256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu16zmr_vmovdqu16zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu16zmr_vmovdqu16zrr_test + ; CHECK: VMOVDQU16Zmr + %0 = VMOVDQU16Zrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu8z128mr_vmovdqu8z128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu8z128mr_vmovdqu8z128rr_test + ; CHECK: VMOVDQU8Z128mr + %0 = VMOVDQU8Z128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu8z256mr_vmovdqu8z256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu8z256mr_vmovdqu8z256rr_test + ; CHECK: VMOVDQU8Z256mr + %0 = VMOVDQU8Z256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu8zmr_vmovdqu8zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu8zmr_vmovdqu8zrr_test + ; CHECK: VMOVDQU8Zmr + %0 = VMOVDQU8Zrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpextrbzmr_vpextrbzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpextrbzmr_vpextrbzrr_test + ; CHECK: VPEXTRBZmr + %0 = VPEXTRBZrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpextrdzmr_vpextrdzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpextrdzmr_vpextrdzrr_test + ; CHECK: VPEXTRDZmr + %0 = VPEXTRDZrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpextrqzmr_vpextrqzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpextrqzmr_vpextrqzrr_test + ; CHECK: VPEXTRQZmr + %0 = VPEXTRQZrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpextrwzmr_vpextrwzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpextrwzmr_vpextrwzrr_test + ; CHECK: VPEXTRWZmr + %0 = VPEXTRWZrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovswbz128mr_vpmovswbz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovswbz128mr_vpmovswbz128rr_test + ; CHECK: VPMOVSWBZ128mr + %0 = VPMOVSWBZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovswbz256mr_vpmovswbz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovswbz256mr_vpmovswbz256rr_test + ; CHECK: VPMOVSWBZ256mr + %0 = VPMOVSWBZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovswbzmr_vpmovswbzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovswbzmr_vpmovswbzrr_test + ; CHECK: VPMOVSWBZmr + %0 = VPMOVSWBZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovuswbz128mr_vpmovuswbz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovuswbz128mr_vpmovuswbz128rr_test + ; CHECK: VPMOVUSWBZ128mr + %0 = VPMOVUSWBZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovuswbz256mr_vpmovuswbz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovuswbz256mr_vpmovuswbz256rr_test + ; CHECK: VPMOVUSWBZ256mr + %0 = VPMOVUSWBZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovuswbzmr_vpmovuswbzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovuswbzmr_vpmovuswbzrr_test + ; CHECK: VPMOVUSWBZmr + %0 = VPMOVUSWBZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovwbz128mr_vpmovwbz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovwbz128mr_vpmovwbz128rr_test + ; CHECK: VPMOVWBZ128mr + %0 = VPMOVWBZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovwbz256mr_vpmovwbz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovwbz256mr_vpmovwbz256rr_test + ; CHECK: VPMOVWBZ256mr + %0 = VPMOVWBZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovwbzmr_vpmovwbzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovwbzmr_vpmovwbzrr_test + ; CHECK: VPMOVWBZmr + %0 = VPMOVWBZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_kmovbkm_kmovbkk_test +tracksRegLiveness: true +registers: + - { id: 1, class: vk8 } +liveins: + - { reg: '%k2', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %k2 + + ; CHECK-LABEL: name: stack_fold_kmovbkm_kmovbkk_test + %1 = COPY %k2 + INLINEASM $nop, 1, 12, implicit-def %k0, 12, implicit-def %k1, 12, implicit-def %k2, 12, implicit-def %k3, 12, implicit-def %k4, 12, implicit-def %k5, 12, implicit-def %k6, 12, implicit-def %k7 + ; CHECK: KMOVBkm + %k1 = KMOVBkk %1 + RET 0 +... +--- +name: stack_fold_kmovdkm_kmovdkk_test +tracksRegLiveness: true +registers: + - { id: 1, class: vk32 } +liveins: + - { reg: '%k2', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %k2 + + ; CHECK-LABEL: name: stack_fold_kmovdkm_kmovdkk_test + %1 = COPY %k2 + INLINEASM $nop, 1, 12, implicit-def %k0, 12, implicit-def %k1, 12, implicit-def %k2, 12, implicit-def %k3, 12, implicit-def %k4, 12, implicit-def %k5, 12, implicit-def %k6, 12, implicit-def %k7 + ; CHECK: KMOVDkm + %k1 = KMOVDkk %1 + RET 0 +... +--- +name: stack_fold_kmovqkm_kmovqkk_test +tracksRegLiveness: true +registers: + - { id: 1, class: vk64 } +liveins: + - { reg: '%k2', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %k2 + + ; CHECK-LABEL: name: stack_fold_kmovqkm_kmovqkk_test + %1 = COPY %k2 + INLINEASM $nop, 1, 12, implicit-def %k0, 12, implicit-def %k1, 12, implicit-def %k2, 12, implicit-def %k3, 12, implicit-def %k4, 12, implicit-def %k5, 12, implicit-def %k6, 12, implicit-def %k7 + ; CHECK: KMOVQkm + %k1 = KMOVQkk %1 + RET 0 +... +--- +name: stack_fold_vbroadcastf32x2z256m_vbroadcastf32x2z256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastf32x2z256m_vbroadcastf32x2z256r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTF32X2Z256m + %ymm0 = VBROADCASTF32X2Z256r %1 + RET 0 +... +--- +name: stack_fold_vbroadcastf32x2zm_vbroadcastf32x2zr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastf32x2zm_vbroadcastf32x2zr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTF32X2Zm + %zmm0 = VBROADCASTF32X2Zr %1 + RET 0 +... +--- +name: stack_fold_vbroadcasti32x2z128m_vbroadcasti32x2z128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcasti32x2z128m_vbroadcasti32x2z128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTI32X2Z128m + %xmm0 = VBROADCASTI32X2Z128r %1 + RET 0 +... +--- +name: stack_fold_vbroadcasti32x2z256m_vbroadcasti32x2z256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcasti32x2z256m_vbroadcasti32x2z256r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTI32X2Z256m + %ymm0 = VBROADCASTI32X2Z256r %1 + RET 0 +... +--- +name: stack_fold_vbroadcasti32x2zm_vbroadcasti32x2zr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcasti32x2zm_vbroadcasti32x2zr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTI32X2Zm + %zmm0 = VBROADCASTI32X2Zr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2qqz128rm_vcvtpd2qqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2qqz128rm_vcvtpd2qqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2QQZ128rm + %xmm0 = VCVTPD2QQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2qqz256rm_vcvtpd2qqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2qqz256rm_vcvtpd2qqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2QQZ256rm + %ymm0 = VCVTPD2QQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2qqzrm_vcvtpd2qqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2qqzrm_vcvtpd2qqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2QQZrm + %zmm0 = VCVTPD2QQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2uqqz128rm_vcvtpd2uqqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2uqqz128rm_vcvtpd2uqqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UQQZ128rm + %xmm0 = VCVTPD2UQQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2uqqz256rm_vcvtpd2uqqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2uqqz256rm_vcvtpd2uqqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UQQZ256rm + %ymm0 = VCVTPD2UQQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2uqqzrm_vcvtpd2uqqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2uqqzrm_vcvtpd2uqqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UQQZrm + %zmm0 = VCVTPD2UQQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2qqz128rm_vcvtps2qqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2qqz128rm_vcvtps2qqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2QQZ128rm + %xmm0 = VCVTPS2QQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2qqz256rm_vcvtps2qqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2qqz256rm_vcvtps2qqz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2QQZ256rm + %ymm0 = VCVTPS2QQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2qqzrm_vcvtps2qqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2qqzrm_vcvtps2qqzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2QQZrm + %zmm0 = VCVTPS2QQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2uqqz128rm_vcvtps2uqqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2uqqz128rm_vcvtps2uqqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UQQZ128rm + %xmm0 = VCVTPS2UQQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2uqqz256rm_vcvtps2uqqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2uqqz256rm_vcvtps2uqqz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UQQZ256rm + %ymm0 = VCVTPS2UQQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2uqqzrm_vcvtps2uqqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2uqqzrm_vcvtps2uqqzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UQQZrm + %zmm0 = VCVTPS2UQQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtqq2pdz128rm_vcvtqq2pdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pdz128rm_vcvtqq2pdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PDZ128rm + %xmm0 = VCVTQQ2PDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtqq2pdz256rm_vcvtqq2pdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pdz256rm_vcvtqq2pdz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PDZ256rm + %ymm0 = VCVTQQ2PDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtqq2pdzrm_vcvtqq2pdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pdzrm_vcvtqq2pdzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PDZrm + %zmm0 = VCVTQQ2PDZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtqq2psz128rm_vcvtqq2psz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2psz128rm_vcvtqq2psz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PSZ128rm + %xmm0 = VCVTQQ2PSZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtqq2psz256rm_vcvtqq2psz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2psz256rm_vcvtqq2psz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PSZ256rm + %xmm0 = VCVTQQ2PSZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtqq2pszrm_vcvtqq2pszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pszrm_vcvtqq2pszrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PSZrm + %ymm0 = VCVTQQ2PSZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqz128rm_vcvttpd2qqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqz128rm_vcvttpd2qqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZ128rm + %xmm0 = VCVTTPD2QQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqz256rm_vcvttpd2qqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqz256rm_vcvttpd2qqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZ256rm + %ymm0 = VCVTTPD2QQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqzrm_vcvttpd2qqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqzrm_vcvttpd2qqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZrm + %zmm0 = VCVTTPD2QQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqzrmb_vcvttpd2qqzrrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqzrmb_vcvttpd2qqzrrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZrmb + %zmm0 = VCVTTPD2QQZrrb %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqz128rm_vcvttpd2uqqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqz128rm_vcvttpd2uqqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZ128rm + %xmm0 = VCVTTPD2UQQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqz256rm_vcvttpd2uqqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqz256rm_vcvttpd2uqqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZ256rm + %ymm0 = VCVTTPD2UQQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqzrm_vcvttpd2uqqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqzrm_vcvttpd2uqqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZrm + %zmm0 = VCVTTPD2UQQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqzrmb_vcvttpd2uqqzrrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqzrmb_vcvttpd2uqqzrrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZrmb + %zmm0 = VCVTTPD2UQQZrrb %1 + RET 0 +... +--- +name: stack_fold_vcvttps2qqz128rm_vcvttps2qqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqz128rm_vcvttps2qqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZ128rm + %xmm0 = VCVTTPS2QQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2qqz256rm_vcvttps2qqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqz256rm_vcvttps2qqz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZ256rm + %ymm0 = VCVTTPS2QQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2qqzrm_vcvttps2qqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqzrm_vcvttps2qqzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZrm + %zmm0 = VCVTTPS2QQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2qqzrmb_vcvttps2qqzrrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqzrmb_vcvttps2qqzrrb_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZrmb + %zmm0 = VCVTTPS2QQZrrb %1 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqz128rm_vcvttps2uqqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqz128rm_vcvttps2uqqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZ128rm + %xmm0 = VCVTTPS2UQQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqz256rm_vcvttps2uqqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqz256rm_vcvttps2uqqz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZ256rm + %ymm0 = VCVTTPS2UQQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqzrm_vcvttps2uqqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqzrm_vcvttps2uqqzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZrm + %zmm0 = VCVTTPS2UQQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqzrmb_vcvttps2uqqzrrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqzrmb_vcvttps2uqqzrrb_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZrmb + %zmm0 = VCVTTPS2UQQZrrb %1 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pdz128rm_vcvtuqq2pdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pdz128rm_vcvtuqq2pdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PDZ128rm + %xmm0 = VCVTUQQ2PDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pdz256rm_vcvtuqq2pdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pdz256rm_vcvtuqq2pdz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PDZ256rm + %ymm0 = VCVTUQQ2PDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pdzrm_vcvtuqq2pdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pdzrm_vcvtuqq2pdzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PDZrm + %zmm0 = VCVTUQQ2PDZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtuqq2psz128rm_vcvtuqq2psz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2psz128rm_vcvtuqq2psz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PSZ128rm + %xmm0 = VCVTUQQ2PSZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtuqq2psz256rm_vcvtuqq2psz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2psz256rm_vcvtuqq2psz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PSZ256rm + %xmm0 = VCVTUQQ2PSZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pszrm_vcvtuqq2pszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pszrm_vcvtuqq2pszrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PSZrm + %ymm0 = VCVTUQQ2PSZrr %1 + RET 0 +... +--- +name: stack_fold_vexp2pdm_vexp2pdr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexp2pdm_vexp2pdr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PDm + %zmm0 = VEXP2PDr %1 + RET 0 +... +--- +name: stack_fold_vexp2pdmb_vexp2pdrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexp2pdmb_vexp2pdrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PDmb + %zmm0 = VEXP2PDrb %1 + RET 0 +... +--- +name: stack_fold_vexp2psm_vexp2psr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexp2psm_vexp2psr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PSm + %zmm0 = VEXP2PSr %1 + RET 0 +... +--- +name: stack_fold_vexp2psmb_vexp2psrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexp2psmb_vexp2psrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PSmb + %zmm0 = VEXP2PSrb %1 + RET 0 +... +--- +name: stack_fold_vfpclasspdz128rm_vfpclasspdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspdz128rm_vfpclasspdz128rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPDZ128rm + %k1 = VFPCLASSPDZ128rr %1, 0 + RET 0 +... +--- +name: stack_fold_vfpclasspdz256rm_vfpclasspdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspdz256rm_vfpclasspdz256rr_test + %1 = COPY %ymm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPDZ256rm + %k1 = VFPCLASSPDZ256rr %1, 0 + RET 0 +... +--- +name: stack_fold_vfpclasspdzrm_vfpclasspdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspdzrm_vfpclasspdzrr_test + %1 = COPY %zmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPDZrm + %k1 = VFPCLASSPDZrr %1, 0 + RET 0 +... +--- +name: stack_fold_vfpclasspsz128rm_vfpclasspsz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspsz128rm_vfpclasspsz128rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPSZ128rm + %k1 = VFPCLASSPSZ128rr %1, 0 + RET 0 +... +--- +name: stack_fold_vfpclasspsz256rm_vfpclasspsz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspsz256rm_vfpclasspsz256rr_test + %1 = COPY %ymm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPSZ256rm + %k1 = VFPCLASSPSZ256rr %1, 0 + RET 0 +... +--- +name: stack_fold_vfpclasspszrm_vfpclasspszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspszrm_vfpclasspszrr_test + %1 = COPY %zmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPSZrm + %k1 = VFPCLASSPSZrr %1, 0 + RET 0 +... +--- +name: stack_fold_vfpclasssdrm_vfpclasssdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasssdrm_vfpclasssdrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSSDrm + %k1 = VFPCLASSSDrr %1, 0 + RET 0 +... +--- +name: stack_fold_vfpclassssrm_vfpclassssrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclassssrm_vfpclassssrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSSSrm + %k1 = VFPCLASSSSrr %1, 0 + RET 0 +... +--- +name: stack_fold_vmovdqu16z128rm_vmovdqu16z128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu16z128rm_vmovdqu16z128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU16Z128rm + %xmm0 = VMOVDQU16Z128rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqu16z256rm_vmovdqu16z256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu16z256rm_vmovdqu16z256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU16Z256rm + %ymm0 = VMOVDQU16Z256rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqu16zrm_vmovdqu16zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu16zrm_vmovdqu16zrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU16Zrm + %zmm0 = VMOVDQU16Zrr %1 + RET 0 +... +--- +name: stack_fold_vmovdqu8z128rm_vmovdqu8z128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu8z128rm_vmovdqu8z128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU8Z128rm + %xmm0 = VMOVDQU8Z128rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqu8z256rm_vmovdqu8z256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu8z256rm_vmovdqu8z256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU8Z256rm + %ymm0 = VMOVDQU8Z256rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqu8zrm_vmovdqu8zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu8zrm_vmovdqu8zrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU8Zrm + %zmm0 = VMOVDQU8Zrr %1 + RET 0 +... +--- +name: stack_fold_vpabsbz128rm_vpabsbz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsbz128rm_vpabsbz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSBZ128rm + %xmm0 = VPABSBZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpabsbz256rm_vpabsbz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpabsbz256rm_vpabsbz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSBZ256rm + %ymm0 = VPABSBZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpabsbzrm_vpabsbzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsbzrm_vpabsbzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSBZrm + %zmm0 = VPABSBZrr %1 + RET 0 +... +--- +name: stack_fold_vpabswz128rm_vpabswz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpabswz128rm_vpabswz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSWZ128rm + %xmm0 = VPABSWZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpabswz256rm_vpabswz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpabswz256rm_vpabswz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSWZ256rm + %ymm0 = VPABSWZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpabswzrm_vpabswzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpabswzrm_vpabswzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSWZrm + %zmm0 = VPABSWZrr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastbz128m_vpbroadcastbz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastbz128m_vpbroadcastbz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTBZ128m + %xmm0 = VPBROADCASTBZ128r %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastbz256m_vpbroadcastbz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastbz256m_vpbroadcastbz256r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTBZ256m + %ymm0 = VPBROADCASTBZ256r %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastbzm_vpbroadcastbzr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastbzm_vpbroadcastbzr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTBZm + %zmm0 = VPBROADCASTBZr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastwz128m_vpbroadcastwz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastwz128m_vpbroadcastwz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTWZ128m + %xmm0 = VPBROADCASTWZ128r %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastwz256m_vpbroadcastwz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastwz256m_vpbroadcastwz256r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTWZ256m + %ymm0 = VPBROADCASTWZ256r %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastwzm_vpbroadcastwzr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastwzm_vpbroadcastwzr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTWZm + %zmm0 = VPBROADCASTWZr %1 + RET 0 +... +--- +name: stack_fold_vpconflictdz128rm_vpconflictdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictdz128rm_vpconflictdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTDZ128rm + %xmm0 = VPCONFLICTDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpconflictdz256rm_vpconflictdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictdz256rm_vpconflictdz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTDZ256rm + %ymm0 = VPCONFLICTDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpconflictdzrm_vpconflictdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictdzrm_vpconflictdzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTDZrm + %zmm0 = VPCONFLICTDZrr %1 + RET 0 +... +--- +name: stack_fold_vpconflictqz128rm_vpconflictqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictqz128rm_vpconflictqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTQZ128rm + %xmm0 = VPCONFLICTQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpconflictqz256rm_vpconflictqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictqz256rm_vpconflictqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTQZ256rm + %ymm0 = VPCONFLICTQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpconflictqzrm_vpconflictqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictqzrm_vpconflictqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTQZrm + %zmm0 = VPCONFLICTQZrr %1 + RET 0 +... +--- +name: stack_fold_vplzcntdz128rm_vplzcntdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntdz128rm_vplzcntdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTDZ128rm + %xmm0 = VPLZCNTDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vplzcntdz256rm_vplzcntdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntdz256rm_vplzcntdz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTDZ256rm + %ymm0 = VPLZCNTDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vplzcntdzrm_vplzcntdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntdzrm_vplzcntdzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTDZrm + %zmm0 = VPLZCNTDZrr %1 + RET 0 +... +--- +name: stack_fold_vplzcntqz128rm_vplzcntqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntqz128rm_vplzcntqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTQZ128rm + %xmm0 = VPLZCNTQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vplzcntqz256rm_vplzcntqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntqz256rm_vplzcntqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTQZ256rm + %ymm0 = VPLZCNTQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vplzcntqzrm_vplzcntqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntqzrm_vplzcntqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTQZrm + %zmm0 = VPLZCNTQZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbwz128rm_vpmovsxbwz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbwz128rm_vpmovsxbwz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBWZ128rm + %xmm0 = VPMOVSXBWZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbwz256rm_vpmovsxbwz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbwz256rm_vpmovsxbwz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBWZ256rm + %ymm0 = VPMOVSXBWZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbwzrm_vpmovsxbwzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbwzrm_vpmovsxbwzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBWZrm + %zmm0 = VPMOVSXBWZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbwz128rm_vpmovzxbwz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbwz128rm_vpmovzxbwz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBWZ128rm + %xmm0 = VPMOVZXBWZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbwz256rm_vpmovzxbwz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbwz256rm_vpmovzxbwz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBWZ256rm + %ymm0 = VPMOVZXBWZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbwzrm_vpmovzxbwzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbwzrm_vpmovzxbwzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBWZrm + %zmm0 = VPMOVZXBWZrr %1 + RET 0 +... +--- +name: stack_fold_vpshufhwz128mi_vpshufhwz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshufhwz128mi_vpshufhwz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFHWZ128mi + %xmm0 = VPSHUFHWZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshufhwz256mi_vpshufhwz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpshufhwz256mi_vpshufhwz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFHWZ256mi + %ymm0 = VPSHUFHWZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshufhwzmi_vpshufhwzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpshufhwzmi_vpshufhwzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFHWZmi + %zmm0 = VPSHUFHWZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshuflwz128mi_vpshuflwz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshuflwz128mi_vpshuflwz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFLWZ128mi + %xmm0 = VPSHUFLWZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshuflwz256mi_vpshuflwz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpshuflwz256mi_vpshuflwz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFLWZ256mi + %ymm0 = VPSHUFLWZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshuflwzmi_vpshuflwzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpshuflwzmi_vpshuflwzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFLWZmi + %zmm0 = VPSHUFLWZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpslldqz128rm_vpslldqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpslldqz128rm_vpslldqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDQZ128rm + %xmm0 = VPSLLDQZ128rr %1, 0 + RET 0 +... +--- +name: stack_fold_vpslldqz256rm_vpslldqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpslldqz256rm_vpslldqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDQZ256rm + %ymm0 = VPSLLDQZ256rr %1, 0 + RET 0 +... +--- +name: stack_fold_vpslldqz512rm_vpslldqz512rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpslldqz512rm_vpslldqz512rr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDQZ512rm + %zmm0 = VPSLLDQZ512rr %1, 0 + RET 0 +... +--- +name: stack_fold_vpsllwz128mi_vpsllwz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsllwz128mi_vpsllwz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ128mi + %xmm0 = VPSLLWZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsllwz256mi_vpsllwz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsllwz256mi_vpsllwz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ256mi + %ymm0 = VPSLLWZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsllwzmi_vpsllwzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsllwzmi_vpsllwzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZmi + %zmm0 = VPSLLWZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrawz128mi_vpsrawz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrawz128mi_vpsrawz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ128mi + %xmm0 = VPSRAWZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrawz256mi_vpsrawz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsrawz256mi_vpsrawz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ256mi + %ymm0 = VPSRAWZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrawzmi_vpsrawzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrawzmi_vpsrawzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZmi + %zmm0 = VPSRAWZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrldqz128rm_vpsrldqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrldqz128rm_vpsrldqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDQZ128rm + %xmm0 = VPSRLDQZ128rr %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrldqz256rm_vpsrldqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsrldqz256rm_vpsrldqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDQZ256rm + %ymm0 = VPSRLDQZ256rr %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrldqz512rm_vpsrldqz512rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrldqz512rm_vpsrldqz512rr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDQZ512rm + %zmm0 = VPSRLDQZ512rr %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrlwz128mi_vpsrlwz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz128mi_vpsrlwz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ128mi + %xmm0 = VPSRLWZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrlwz256mi_vpsrlwz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz256mi_vpsrlwz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ256mi + %ymm0 = VPSRLWZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrlwzmi_vpsrlwzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlwzmi_vpsrlwzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZmi + %zmm0 = VPSRLWZri %1, 0 + RET 0 +... +--- +name: stack_fold_vrcp28pdm_vrcp28pdr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp28pdm_vrcp28pdr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PDm + %zmm0 = VRCP28PDr %1 + RET 0 +... +--- +name: stack_fold_vrcp28pdmb_vrcp28pdrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp28pdmb_vrcp28pdrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PDmb + %zmm0 = VRCP28PDrb %1 + RET 0 +... +--- +name: stack_fold_vrcp28psm_vrcp28psr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp28psm_vrcp28psr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PSm + %zmm0 = VRCP28PSr %1 + RET 0 +... +--- +name: stack_fold_vrcp28psmb_vrcp28psrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp28psmb_vrcp28psrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PSmb + %zmm0 = VRCP28PSrb %1 + RET 0 +... +--- +name: stack_fold_vreducepdz128rmi_vreducepdz128rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepdz128rmi_vreducepdz128rri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZ128rmi + %xmm0 = VREDUCEPDZ128rri %1, 0 + RET 0 +... +--- +name: stack_fold_vreducepdz256rmi_vreducepdz256rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vreducepdz256rmi_vreducepdz256rri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZ256rmi + %ymm0 = VREDUCEPDZ256rri %1, 0 + RET 0 +... +--- +name: stack_fold_vreducepdzrmbi_vreducepdzrrib_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepdzrmbi_vreducepdzrrib_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZrmbi + %zmm0 = VREDUCEPDZrrib %1, 0 + RET 0 +... +--- +name: stack_fold_vreducepdzrmi_vreducepdzrri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepdzrmi_vreducepdzrri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZrmi + %zmm0 = VREDUCEPDZrri %1, 0 + RET 0 +... +--- +name: stack_fold_vreducepsz128rmi_vreducepsz128rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepsz128rmi_vreducepsz128rri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZ128rmi + %xmm0 = VREDUCEPSZ128rri %1, 0 + RET 0 +... +--- +name: stack_fold_vreducepsz256rmi_vreducepsz256rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vreducepsz256rmi_vreducepsz256rri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZ256rmi + %ymm0 = VREDUCEPSZ256rri %1, 0 + RET 0 +... +--- +name: stack_fold_vreducepszrmbi_vreducepszrrib_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepszrmbi_vreducepszrrib_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZrmbi + %zmm0 = VREDUCEPSZrrib %1, 0 + RET 0 +... +--- +name: stack_fold_vreducepszrmi_vreducepszrri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepszrmi_vreducepszrri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZrmi + %zmm0 = VREDUCEPSZrri %1, 0 + RET 0 +... +--- +name: stack_fold_vrsqrt28pdm_vrsqrt28pdr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28pdm_vrsqrt28pdr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PDm + %zmm0 = VRSQRT28PDr %1 + RET 0 +... +--- +name: stack_fold_vrsqrt28pdmb_vrsqrt28pdrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28pdmb_vrsqrt28pdrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PDmb + %zmm0 = VRSQRT28PDrb %1 + RET 0 +... +--- +name: stack_fold_vrsqrt28psm_vrsqrt28psr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28psm_vrsqrt28psr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PSm + %zmm0 = VRSQRT28PSr %1 + RET 0 +... +--- +name: stack_fold_vrsqrt28psmb_vrsqrt28psrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28psmb_vrsqrt28psrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PSmb + %zmm0 = VRSQRT28PSrb %1 + RET 0 +... +--- +name: stack_fold_vandnpdz128rm_vandnpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandnpdz128rm_vandnpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPDZ128rm + %xmm0 = VANDNPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vandnpdz256rm_vandnpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandnpdz256rm_vandnpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPDZ256rm + %ymm0 = VANDNPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vandnpdzrm_vandnpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vandnpdzrm_vandnpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPDZrm + %zmm0 = VANDNPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vandnpsz128rm_vandnpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandnpsz128rm_vandnpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPSZ128rm + %xmm0 = VANDNPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vandnpsz256rm_vandnpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandnpsz256rm_vandnpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPSZ256rm + %ymm0 = VANDNPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vandnpszrm_vandnpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vandnpszrm_vandnpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPSZrm + %zmm0 = VANDNPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vandpdz128rm_vandpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandpdz128rm_vandpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPDZ128rm + %xmm0 = VANDPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vandpdz256rm_vandpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandpdz256rm_vandpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPDZ256rm + %ymm0 = VANDPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vandpdzrm_vandpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vandpdzrm_vandpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPDZrm + %zmm0 = VANDPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vandpsz128rm_vandpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandpsz128rm_vandpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPSZ128rm + %xmm0 = VANDPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vandpsz256rm_vandpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandpsz256rm_vandpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPSZ256rm + %ymm0 = VANDPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vandpszrm_vandpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vandpszrm_vandpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPSZrm + %zmm0 = VANDPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vbroadcastf32x2z256mkz_vbroadcastf32x2z256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastf32x2z256mkz_vbroadcastf32x2z256rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTF32X2Z256mkz + %ymm0 = VBROADCASTF32X2Z256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vbroadcastf32x2zmkz_vbroadcastf32x2zrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastf32x2zmkz_vbroadcastf32x2zrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTF32X2Zmkz + %zmm0 = VBROADCASTF32X2Zrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vbroadcasti32x2z128mkz_vbroadcasti32x2z128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcasti32x2z128mkz_vbroadcasti32x2z128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTI32X2Z128mkz + %xmm0 = VBROADCASTI32X2Z128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vbroadcasti32x2z256mkz_vbroadcasti32x2z256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcasti32x2z256mkz_vbroadcasti32x2z256rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTI32X2Z256mkz + %ymm0 = VBROADCASTI32X2Z256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vbroadcasti32x2zmkz_vbroadcasti32x2zrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcasti32x2zmkz_vbroadcasti32x2zrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTI32X2Zmkz + %zmm0 = VBROADCASTI32X2Zrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2qqz128rmkz_vcvtpd2qqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2qqz128rmkz_vcvtpd2qqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2QQZ128rmkz + %xmm0 = VCVTPD2QQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2qqz256rmkz_vcvtpd2qqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2qqz256rmkz_vcvtpd2qqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2QQZ256rmkz + %ymm0 = VCVTPD2QQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2qqzrmkz_vcvtpd2qqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2qqzrmkz_vcvtpd2qqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2QQZrmkz + %zmm0 = VCVTPD2QQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2uqqz128rmkz_vcvtpd2uqqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2uqqz128rmkz_vcvtpd2uqqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UQQZ128rmkz + %xmm0 = VCVTPD2UQQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2uqqz256rmkz_vcvtpd2uqqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2uqqz256rmkz_vcvtpd2uqqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UQQZ256rmkz + %ymm0 = VCVTPD2UQQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2uqqzrmkz_vcvtpd2uqqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2uqqzrmkz_vcvtpd2uqqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UQQZrmkz + %zmm0 = VCVTPD2UQQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2qqz128rmkz_vcvtps2qqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2qqz128rmkz_vcvtps2qqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2QQZ128rmkz + %xmm0 = VCVTPS2QQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2qqz256rmkz_vcvtps2qqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2qqz256rmkz_vcvtps2qqz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2QQZ256rmkz + %ymm0 = VCVTPS2QQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2qqzrmkz_vcvtps2qqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2qqzrmkz_vcvtps2qqzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2QQZrmkz + %zmm0 = VCVTPS2QQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2uqqz128rmkz_vcvtps2uqqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2uqqz128rmkz_vcvtps2uqqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UQQZ128rmkz + %xmm0 = VCVTPS2UQQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2uqqz256rmkz_vcvtps2uqqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2uqqz256rmkz_vcvtps2uqqz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UQQZ256rmkz + %ymm0 = VCVTPS2UQQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2uqqzrmkz_vcvtps2uqqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2uqqzrmkz_vcvtps2uqqzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UQQZrmkz + %zmm0 = VCVTPS2UQQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtqq2pdz128rmkz_vcvtqq2pdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pdz128rmkz_vcvtqq2pdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PDZ128rmkz + %xmm0 = VCVTQQ2PDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtqq2pdz256rmkz_vcvtqq2pdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pdz256rmkz_vcvtqq2pdz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PDZ256rmkz + %ymm0 = VCVTQQ2PDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtqq2pdzrmkz_vcvtqq2pdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pdzrmkz_vcvtqq2pdzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PDZrmkz + %zmm0 = VCVTQQ2PDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtqq2psz128rmkz_vcvtqq2psz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2psz128rmkz_vcvtqq2psz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PSZ128rmkz + %xmm0 = VCVTQQ2PSZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtqq2psz256rmkz_vcvtqq2psz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2psz256rmkz_vcvtqq2psz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PSZ256rmkz + %xmm0 = VCVTQQ2PSZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtqq2pszrmkz_vcvtqq2pszrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pszrmkz_vcvtqq2pszrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PSZrmkz + %ymm0 = VCVTQQ2PSZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqz128rmkz_vcvttpd2qqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqz128rmkz_vcvttpd2qqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZ128rmkz + %xmm0 = VCVTTPD2QQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqz256rmkz_vcvttpd2qqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqz256rmkz_vcvttpd2qqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZ256rmkz + %ymm0 = VCVTTPD2QQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqzrmbkz_vcvttpd2qqzrrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqzrmbkz_vcvttpd2qqzrrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZrmbkz + %zmm0 = VCVTTPD2QQZrrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqzrmkz_vcvttpd2qqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqzrmkz_vcvttpd2qqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZrmkz + %zmm0 = VCVTTPD2QQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqz128rmkz_vcvttpd2uqqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqz128rmkz_vcvttpd2uqqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZ128rmkz + %xmm0 = VCVTTPD2UQQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqz256rmkz_vcvttpd2uqqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqz256rmkz_vcvttpd2uqqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZ256rmkz + %ymm0 = VCVTTPD2UQQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqzrmbkz_vcvttpd2uqqzrrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqzrmbkz_vcvttpd2uqqzrrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZrmbkz + %zmm0 = VCVTTPD2UQQZrrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqzrmkz_vcvttpd2uqqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqzrmkz_vcvttpd2uqqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZrmkz + %zmm0 = VCVTTPD2UQQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2qqz128rmkz_vcvttps2qqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqz128rmkz_vcvttps2qqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZ128rmkz + %xmm0 = VCVTTPS2QQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2qqz256rmkz_vcvttps2qqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqz256rmkz_vcvttps2qqz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZ256rmkz + %ymm0 = VCVTTPS2QQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2qqzrmbkz_vcvttps2qqzrrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqzrmbkz_vcvttps2qqzrrbkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZrmbkz + %zmm0 = VCVTTPS2QQZrrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2qqzrmkz_vcvttps2qqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqzrmkz_vcvttps2qqzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZrmkz + %zmm0 = VCVTTPS2QQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqz128rmkz_vcvttps2uqqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqz128rmkz_vcvttps2uqqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZ128rmkz + %xmm0 = VCVTTPS2UQQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqz256rmkz_vcvttps2uqqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqz256rmkz_vcvttps2uqqz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZ256rmkz + %ymm0 = VCVTTPS2UQQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqzrmbkz_vcvttps2uqqzrrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqzrmbkz_vcvttps2uqqzrrbkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZrmbkz + %zmm0 = VCVTTPS2UQQZrrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqzrmkz_vcvttps2uqqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqzrmkz_vcvttps2uqqzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZrmkz + %zmm0 = VCVTTPS2UQQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pdz128rmkz_vcvtuqq2pdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pdz128rmkz_vcvtuqq2pdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PDZ128rmkz + %xmm0 = VCVTUQQ2PDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pdz256rmkz_vcvtuqq2pdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pdz256rmkz_vcvtuqq2pdz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PDZ256rmkz + %ymm0 = VCVTUQQ2PDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pdzrmkz_vcvtuqq2pdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pdzrmkz_vcvtuqq2pdzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PDZrmkz + %zmm0 = VCVTUQQ2PDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtuqq2psz128rmkz_vcvtuqq2psz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2psz128rmkz_vcvtuqq2psz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PSZ128rmkz + %xmm0 = VCVTUQQ2PSZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtuqq2psz256rmkz_vcvtuqq2psz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2psz256rmkz_vcvtuqq2psz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PSZ256rmkz + %xmm0 = VCVTUQQ2PSZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pszrmkz_vcvtuqq2pszrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pszrmkz_vcvtuqq2pszrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PSZrmkz + %ymm0 = VCVTUQQ2PSZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vdbpsadbwz128rmi_vdbpsadbwz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdbpsadbwz128rmi_vdbpsadbwz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDBPSADBWZ128rmi + %xmm0 = VDBPSADBWZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vdbpsadbwz256rmi_vdbpsadbwz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vdbpsadbwz256rmi_vdbpsadbwz256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDBPSADBWZ256rmi + %ymm0 = VDBPSADBWZ256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vdbpsadbwzrmi_vdbpsadbwzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vdbpsadbwzrmi_vdbpsadbwzrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDBPSADBWZrmi + %zmm0 = VDBPSADBWZrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vexp2pdmbkz_vexp2pdrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexp2pdmbkz_vexp2pdrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PDmbkz + %zmm0 = VEXP2PDrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vexp2pdmkz_vexp2pdrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexp2pdmkz_vexp2pdrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PDmkz + %zmm0 = VEXP2PDrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vexp2psmbkz_vexp2psrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexp2psmbkz_vexp2psrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PSmbkz + %zmm0 = VEXP2PSrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vexp2psmkz_vexp2psrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexp2psmkz_vexp2psrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PSmkz + %zmm0 = VEXP2PSrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vfpclasspdz128rmk_vfpclasspdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspdz128rmk_vfpclasspdz128rrk_test + %2 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPDZ128rmk + %k1 = VFPCLASSPDZ128rrk undef %k2, %2, 0 + RET 0 +... +--- +name: stack_fold_vfpclasspdz256rmk_vfpclasspdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm0', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspdz256rmk_vfpclasspdz256rrk_test + %2 = COPY %ymm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPDZ256rmk + %k1 = VFPCLASSPDZ256rrk undef %k2, %2, 0 + RET 0 +... +--- +name: stack_fold_vfpclasspdzrmk_vfpclasspdzrrk_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm0', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspdzrmk_vfpclasspdzrrk_test + %2 = COPY %zmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPDZrmk + %k1 = VFPCLASSPDZrrk undef %k2, %2, 0 + RET 0 +... +--- +name: stack_fold_vfpclasspsz128rmk_vfpclasspsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspsz128rmk_vfpclasspsz128rrk_test + %2 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPSZ128rmk + %k1 = VFPCLASSPSZ128rrk undef %k2, %2, 0 + RET 0 +... +--- +name: stack_fold_vfpclasspsz256rmk_vfpclasspsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm0', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspsz256rmk_vfpclasspsz256rrk_test + %2 = COPY %ymm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPSZ256rmk + %k1 = VFPCLASSPSZ256rrk undef %k2, %2, 0 + RET 0 +... +--- +name: stack_fold_vfpclasspszrmk_vfpclasspszrrk_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm0', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasspszrmk_vfpclasspszrrk_test + %2 = COPY %zmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSPSZrmk + %k1 = VFPCLASSPSZrrk undef %k2, %2, 0 + RET 0 +... +--- +name: stack_fold_vfpclasssdrmk_vfpclasssdrrk_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclasssdrmk_vfpclasssdrrk_test + %2 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSSDrmk + %k1 = VFPCLASSSDrrk undef %k2, %2, 0 + RET 0 +... +--- +name: stack_fold_vfpclassssrmk_vfpclassssrrk_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vfpclassssrmk_vfpclassssrrk_test + %2 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFPCLASSSSrmk + %k1 = VFPCLASSSSrrk undef %k2, %2, 0 + RET 0 +... +--- +name: stack_fold_vinsertf32x8zrm_vinsertf32x8zrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf32x8zrm_vinsertf32x8zrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF32x8Zrm + %zmm0 = VINSERTF32x8Zrr undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinsertf64x2z256rm_vinsertf64x2z256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf64x2z256rm_vinsertf64x2z256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF64x2Z256rm + %ymm0 = VINSERTF64x2Z256rr undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinsertf64x2zrm_vinsertf64x2zrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf64x2zrm_vinsertf64x2zrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF64x2Zrm + %zmm0 = VINSERTF64x2Zrr undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinserti32x8zrm_vinserti32x8zrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vinserti32x8zrm_vinserti32x8zrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI32x8Zrm + %zmm0 = VINSERTI32x8Zrr undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinserti64x2z256rm_vinserti64x2z256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinserti64x2z256rm_vinserti64x2z256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI64x2Z256rm + %ymm0 = VINSERTI64x2Z256rr undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinserti64x2zrm_vinserti64x2zrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinserti64x2zrm_vinserti64x2zrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI64x2Zrm + %zmm0 = VINSERTI64x2Zrr undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vmovdqu16z128rmkz_vmovdqu16z128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu16z128rmkz_vmovdqu16z128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU16Z128rmkz + %xmm0 = VMOVDQU16Z128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqu16z256rmkz_vmovdqu16z256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu16z256rmkz_vmovdqu16z256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU16Z256rmkz + %ymm0 = VMOVDQU16Z256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqu16zrmkz_vmovdqu16zrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu16zrmkz_vmovdqu16zrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU16Zrmkz + %zmm0 = VMOVDQU16Zrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqu8z128rmkz_vmovdqu8z128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu8z128rmkz_vmovdqu8z128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU8Z128rmkz + %xmm0 = VMOVDQU8Z128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqu8z256rmkz_vmovdqu8z256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu8z256rmkz_vmovdqu8z256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU8Z256rmkz + %ymm0 = VMOVDQU8Z256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqu8zrmkz_vmovdqu8zrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu8zrmkz_vmovdqu8zrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU8Zrmkz + %zmm0 = VMOVDQU8Zrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vorpdz128rm_vorpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vorpdz128rm_vorpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPDZ128rm + %xmm0 = VORPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vorpdz256rm_vorpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vorpdz256rm_vorpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPDZ256rm + %ymm0 = VORPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vorpdzrm_vorpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vorpdzrm_vorpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPDZrm + %zmm0 = VORPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vorpsz128rm_vorpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vorpsz128rm_vorpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPSZ128rm + %xmm0 = VORPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vorpsz256rm_vorpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vorpsz256rm_vorpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPSZ256rm + %ymm0 = VORPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vorpszrm_vorpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vorpszrm_vorpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPSZrm + %zmm0 = VORPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpabsbz128rmkz_vpabsbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsbz128rmkz_vpabsbz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSBZ128rmkz + %xmm0 = VPABSBZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpabsbz256rmkz_vpabsbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpabsbz256rmkz_vpabsbz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSBZ256rmkz + %ymm0 = VPABSBZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpabsbzrmkz_vpabsbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsbzrmkz_vpabsbzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSBZrmkz + %zmm0 = VPABSBZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpabswz128rmkz_vpabswz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpabswz128rmkz_vpabswz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSWZ128rmkz + %xmm0 = VPABSWZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpabswz256rmkz_vpabswz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpabswz256rmkz_vpabswz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSWZ256rmkz + %ymm0 = VPABSWZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpabswzrmkz_vpabswzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpabswzrmkz_vpabswzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSWZrmkz + %zmm0 = VPABSWZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpackssdwz128rm_vpackssdwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpackssdwz128rm_vpackssdwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSDWZ128rm + %xmm0 = VPACKSSDWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpackssdwz256rm_vpackssdwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpackssdwz256rm_vpackssdwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSDWZ256rm + %ymm0 = VPACKSSDWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpackssdwzrm_vpackssdwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpackssdwzrm_vpackssdwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSDWZrm + %zmm0 = VPACKSSDWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpacksswbz128rm_vpacksswbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpacksswbz128rm_vpacksswbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSWBZ128rm + %xmm0 = VPACKSSWBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpacksswbz256rm_vpacksswbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpacksswbz256rm_vpacksswbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSWBZ256rm + %ymm0 = VPACKSSWBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpacksswbzrm_vpacksswbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpacksswbzrm_vpacksswbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSWBZrm + %zmm0 = VPACKSSWBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpackusdwz128rm_vpackusdwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpackusdwz128rm_vpackusdwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSDWZ128rm + %xmm0 = VPACKUSDWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpackusdwz256rm_vpackusdwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpackusdwz256rm_vpackusdwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSDWZ256rm + %ymm0 = VPACKUSDWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpackusdwzrm_vpackusdwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpackusdwzrm_vpackusdwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSDWZrm + %zmm0 = VPACKUSDWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpackuswbz128rm_vpackuswbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpackuswbz128rm_vpackuswbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSWBZ128rm + %xmm0 = VPACKUSWBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpackuswbz256rm_vpackuswbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpackuswbz256rm_vpackuswbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSWBZ256rm + %ymm0 = VPACKUSWBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpackuswbzrm_vpackuswbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpackuswbzrm_vpackuswbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSWBZrm + %zmm0 = VPACKUSWBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddbz128rm_vpaddbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddbz128rm_vpaddbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDBZ128rm + %xmm0 = VPADDBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddbz256rm_vpaddbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddbz256rm_vpaddbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDBZ256rm + %ymm0 = VPADDBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddbzrm_vpaddbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddbzrm_vpaddbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDBZrm + %zmm0 = VPADDBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddsbz128rm_vpaddsbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddsbz128rm_vpaddsbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSBZ128rm + %xmm0 = VPADDSBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddsbz256rm_vpaddsbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddsbz256rm_vpaddsbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSBZ256rm + %ymm0 = VPADDSBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddsbzrm_vpaddsbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddsbzrm_vpaddsbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSBZrm + %zmm0 = VPADDSBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddswz128rm_vpaddswz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddswz128rm_vpaddswz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSWZ128rm + %xmm0 = VPADDSWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddswz256rm_vpaddswz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddswz256rm_vpaddswz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSWZ256rm + %ymm0 = VPADDSWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddswzrm_vpaddswzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddswzrm_vpaddswzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSWZrm + %zmm0 = VPADDSWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddusbz128rm_vpaddusbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddusbz128rm_vpaddusbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSBZ128rm + %xmm0 = VPADDUSBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddusbz256rm_vpaddusbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddusbz256rm_vpaddusbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSBZ256rm + %ymm0 = VPADDUSBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddusbzrm_vpaddusbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddusbzrm_vpaddusbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSBZrm + %zmm0 = VPADDUSBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpadduswz128rm_vpadduswz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpadduswz128rm_vpadduswz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSWZ128rm + %xmm0 = VPADDUSWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpadduswz256rm_vpadduswz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpadduswz256rm_vpadduswz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSWZ256rm + %ymm0 = VPADDUSWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpadduswzrm_vpadduswzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpadduswzrm_vpadduswzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSWZrm + %zmm0 = VPADDUSWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddwz128rm_vpaddwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddwz128rm_vpaddwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDWZ128rm + %xmm0 = VPADDWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddwz256rm_vpaddwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddwz256rm_vpaddwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDWZ256rm + %ymm0 = VPADDWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddwzrm_vpaddwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddwzrm_vpaddwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDWZrm + %zmm0 = VPADDWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpalignrz128rmi_vpalignrz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpalignrz128rmi_vpalignrz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPALIGNRZ128rmi + %xmm0 = VPALIGNRZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpalignrz256rmi_vpalignrz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpalignrz256rmi_vpalignrz256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPALIGNRZ256rmi + %ymm0 = VPALIGNRZ256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpalignrzrmi_vpalignrzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpalignrzrmi_vpalignrzrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPALIGNRZrmi + %zmm0 = VPALIGNRZrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpavgbz128rm_vpavgbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpavgbz128rm_vpavgbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGBZ128rm + %xmm0 = VPAVGBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpavgbz256rm_vpavgbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpavgbz256rm_vpavgbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGBZ256rm + %ymm0 = VPAVGBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpavgbzrm_vpavgbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpavgbzrm_vpavgbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGBZrm + %zmm0 = VPAVGBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpavgwz128rm_vpavgwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpavgwz128rm_vpavgwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGWZ128rm + %xmm0 = VPAVGWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpavgwz256rm_vpavgwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpavgwz256rm_vpavgwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGWZ256rm + %ymm0 = VPAVGWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpavgwzrm_vpavgwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpavgwzrm_vpavgwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGWZrm + %zmm0 = VPAVGWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmbz128rm_vpblendmbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmbz128rm_vpblendmbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMBZ128rm + %xmm0 = VPBLENDMBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmbz256rm_vpblendmbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmbz256rm_vpblendmbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMBZ256rm + %ymm0 = VPBLENDMBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmbzrm_vpblendmbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmbzrm_vpblendmbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMBZrm + %zmm0 = VPBLENDMBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmwz128rm_vpblendmwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmwz128rm_vpblendmwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMWZ128rm + %xmm0 = VPBLENDMWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmwz256rm_vpblendmwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmwz256rm_vpblendmwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMWZ256rm + %ymm0 = VPBLENDMWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmwzrm_vpblendmwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmwzrm_vpblendmwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMWZrm + %zmm0 = VPBLENDMWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastbz128mkz_vpbroadcastbz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastbz128mkz_vpbroadcastbz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTBZ128mkz + %xmm0 = VPBROADCASTBZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastbz256mkz_vpbroadcastbz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastbz256mkz_vpbroadcastbz256rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTBZ256mkz + %ymm0 = VPBROADCASTBZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastbzmkz_vpbroadcastbzrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastbzmkz_vpbroadcastbzrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTBZmkz + %zmm0 = VPBROADCASTBZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastwz128mkz_vpbroadcastwz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastwz128mkz_vpbroadcastwz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTWZ128mkz + %xmm0 = VPBROADCASTWZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastwz256mkz_vpbroadcastwz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastwz256mkz_vpbroadcastwz256rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTWZ256mkz + %ymm0 = VPBROADCASTWZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastwzmkz_vpbroadcastwzrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastwzmkz_vpbroadcastwzrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTWZmkz + %zmm0 = VPBROADCASTWZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpbz128rmi_vpcmpbz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbz128rmi_vpcmpbz128rri_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZ128rmi + %k1 = VPCMPBZ128rri undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpbz128rmi_alt_vpcmpbz128rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbz128rmi_alt_vpcmpbz128rri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZ128rmi_alt + %k1 = VPCMPBZ128rri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpbz256rmi_vpcmpbz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbz256rmi_vpcmpbz256rri_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZ256rmi + %k1 = VPCMPBZ256rri undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpbz256rmi_alt_vpcmpbz256rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbz256rmi_alt_vpcmpbz256rri_alt_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZ256rmi_alt + %k1 = VPCMPBZ256rri_alt undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpbzrmi_vpcmpbzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbzrmi_vpcmpbzrri_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZrmi + %k1 = VPCMPBZrri undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpbzrmi_alt_vpcmpbzrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbzrmi_alt_vpcmpbzrri_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZrmi_alt + %k1 = VPCMPBZrri_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpeqbz128rm_vpcmpeqbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqbz128rm_vpcmpeqbz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQBZ128rm + %k1 = VPCMPEQBZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqbz256rm_vpcmpeqbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqbz256rm_vpcmpeqbz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQBZ256rm + %k1 = VPCMPEQBZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqbzrm_vpcmpeqbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqbzrm_vpcmpeqbzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQBZrm + %k1 = VPCMPEQBZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqwz128rm_vpcmpeqwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqwz128rm_vpcmpeqwz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQWZ128rm + %k1 = VPCMPEQWZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqwz256rm_vpcmpeqwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqwz256rm_vpcmpeqwz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQWZ256rm + %k1 = VPCMPEQWZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqwzrm_vpcmpeqwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqwzrm_vpcmpeqwzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQWZrm + %k1 = VPCMPEQWZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtbz128rm_vpcmpgtbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtbz128rm_vpcmpgtbz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTBZ128rm + %k1 = VPCMPGTBZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtbz256rm_vpcmpgtbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtbz256rm_vpcmpgtbz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTBZ256rm + %k1 = VPCMPGTBZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtbzrm_vpcmpgtbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtbzrm_vpcmpgtbzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTBZrm + %k1 = VPCMPGTBZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtwz128rm_vpcmpgtwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtwz128rm_vpcmpgtwz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTWZ128rm + %k1 = VPCMPGTWZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtwz256rm_vpcmpgtwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtwz256rm_vpcmpgtwz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTWZ256rm + %k1 = VPCMPGTWZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtwzrm_vpcmpgtwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtwzrm_vpcmpgtwzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTWZrm + %k1 = VPCMPGTWZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpubz128rmi_vpcmpubz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubz128rmi_vpcmpubz128rri_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZ128rmi + %k1 = VPCMPUBZ128rri undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpubz128rmi_alt_vpcmpubz128rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubz128rmi_alt_vpcmpubz128rri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZ128rmi_alt + %k1 = VPCMPUBZ128rri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpubz256rmi_vpcmpubz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubz256rmi_vpcmpubz256rri_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZ256rmi + %k1 = VPCMPUBZ256rri undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpubz256rmi_alt_vpcmpubz256rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubz256rmi_alt_vpcmpubz256rri_alt_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZ256rmi_alt + %k1 = VPCMPUBZ256rri_alt undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpubzrmi_vpcmpubzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubzrmi_vpcmpubzrri_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZrmi + %k1 = VPCMPUBZrri undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpubzrmi_alt_vpcmpubzrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubzrmi_alt_vpcmpubzrri_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZrmi_alt + %k1 = VPCMPUBZrri_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwz128rmi_vpcmpuwz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwz128rmi_vpcmpuwz128rri_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZ128rmi + %k1 = VPCMPUWZ128rri undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwz128rmi_alt_vpcmpuwz128rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwz128rmi_alt_vpcmpuwz128rri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZ128rmi_alt + %k1 = VPCMPUWZ128rri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwz256rmi_vpcmpuwz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwz256rmi_vpcmpuwz256rri_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZ256rmi + %k1 = VPCMPUWZ256rri undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwz256rmi_alt_vpcmpuwz256rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwz256rmi_alt_vpcmpuwz256rri_alt_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZ256rmi_alt + %k1 = VPCMPUWZ256rri_alt undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwzrmi_vpcmpuwzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwzrmi_vpcmpuwzrri_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZrmi + %k1 = VPCMPUWZrri undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwzrmi_alt_vpcmpuwzrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwzrmi_alt_vpcmpuwzrri_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZrmi_alt + %k1 = VPCMPUWZrri_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwz128rmi_vpcmpwz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwz128rmi_vpcmpwz128rri_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZ128rmi + %k1 = VPCMPWZ128rri undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwz128rmi_alt_vpcmpwz128rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwz128rmi_alt_vpcmpwz128rri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZ128rmi_alt + %k1 = VPCMPWZ128rri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwz256rmi_vpcmpwz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwz256rmi_vpcmpwz256rri_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZ256rmi + %k1 = VPCMPWZ256rri undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwz256rmi_alt_vpcmpwz256rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwz256rmi_alt_vpcmpwz256rri_alt_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZ256rmi_alt + %k1 = VPCMPWZ256rri_alt undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwzrmi_vpcmpwzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwzrmi_vpcmpwzrri_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZrmi + %k1 = VPCMPWZrri undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwzrmi_alt_vpcmpwzrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwzrmi_alt_vpcmpwzrri_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZrmi_alt + %k1 = VPCMPWZrri_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpconflictdz128rmkz_vpconflictdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictdz128rmkz_vpconflictdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTDZ128rmkz + %xmm0 = VPCONFLICTDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpconflictdz256rmkz_vpconflictdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictdz256rmkz_vpconflictdz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTDZ256rmkz + %ymm0 = VPCONFLICTDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpconflictdzrmkz_vpconflictdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictdzrmkz_vpconflictdzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTDZrmkz + %zmm0 = VPCONFLICTDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpconflictqz128rmkz_vpconflictqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictqz128rmkz_vpconflictqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTQZ128rmkz + %xmm0 = VPCONFLICTQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpconflictqz256rmkz_vpconflictqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictqz256rmkz_vpconflictqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTQZ256rmkz + %ymm0 = VPCONFLICTQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpconflictqzrmkz_vpconflictqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpconflictqzrmkz_vpconflictqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTQZrmkz + %zmm0 = VPCONFLICTQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpermbz128rm_vpermbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermbz128rm_vpermbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMBZ128rm + %xmm0 = VPERMBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpermbz256rm_vpermbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermbz256rm_vpermbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMBZ256rm + %ymm0 = VPERMBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpermbzrm_vpermbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermbzrm_vpermbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMBZrm + %zmm0 = VPERMBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpermwz128rm_vpermwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermwz128rm_vpermwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMWZ128rm + %xmm0 = VPERMWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpermwz256rm_vpermwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermwz256rm_vpermwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMWZ256rm + %ymm0 = VPERMWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpermwzrm_vpermwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermwzrm_vpermwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMWZrm + %zmm0 = VPERMWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpinsrbzrm_vpinsrbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vpinsrbzrm_vpinsrbzrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VPINSRBZrm + %xmm0 = VPINSRBZrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpinsrdzrm_vpinsrdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vpinsrdzrm_vpinsrdzrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VPINSRDZrm + %xmm0 = VPINSRDZrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpinsrqzrm_vpinsrqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vpinsrqzrm_vpinsrqzrr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VPINSRQZrm + %xmm0 = VPINSRQZrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpinsrwzrm_vpinsrwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vpinsrwzrm_vpinsrwzrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VPINSRWZrm + %xmm0 = VPINSRWZrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vplzcntdz128rmkz_vplzcntdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntdz128rmkz_vplzcntdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTDZ128rmkz + %xmm0 = VPLZCNTDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vplzcntdz256rmkz_vplzcntdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntdz256rmkz_vplzcntdz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTDZ256rmkz + %ymm0 = VPLZCNTDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vplzcntdzrmkz_vplzcntdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntdzrmkz_vplzcntdzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTDZrmkz + %zmm0 = VPLZCNTDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vplzcntqz128rmkz_vplzcntqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntqz128rmkz_vplzcntqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTQZ128rmkz + %xmm0 = VPLZCNTQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vplzcntqz256rmkz_vplzcntqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntqz256rmkz_vplzcntqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTQZ256rmkz + %ymm0 = VPLZCNTQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vplzcntqzrmkz_vplzcntqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vplzcntqzrmkz_vplzcntqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTQZrmkz + %zmm0 = VPLZCNTQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmaddubswz128rm_vpmaddubswz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddubswz128rm_vpmaddubswz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDUBSWZ128rm + %xmm0 = VPMADDUBSWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaddubswz256rm_vpmaddubswz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddubswz256rm_vpmaddubswz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDUBSWZ256rm + %ymm0 = VPMADDUBSWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaddubswzrm_vpmaddubswzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddubswzrm_vpmaddubswzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDUBSWZrm + %zmm0 = VPMADDUBSWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaddwdz128rm_vpmaddwdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddwdz128rm_vpmaddwdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDWDZ128rm + %xmm0 = VPMADDWDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaddwdz256rm_vpmaddwdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddwdz256rm_vpmaddwdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDWDZ256rm + %ymm0 = VPMADDWDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaddwdzrm_vpmaddwdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddwdzrm_vpmaddwdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDWDZrm + %zmm0 = VPMADDWDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsbz128rm_vpmaxsbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsbz128rm_vpmaxsbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSBZ128rm + %xmm0 = VPMAXSBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsbz256rm_vpmaxsbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsbz256rm_vpmaxsbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSBZ256rm + %ymm0 = VPMAXSBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsbzrm_vpmaxsbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsbzrm_vpmaxsbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSBZrm + %zmm0 = VPMAXSBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxswz128rm_vpmaxswz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxswz128rm_vpmaxswz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSWZ128rm + %xmm0 = VPMAXSWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxswz256rm_vpmaxswz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxswz256rm_vpmaxswz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSWZ256rm + %ymm0 = VPMAXSWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxswzrm_vpmaxswzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxswzrm_vpmaxswzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSWZrm + %zmm0 = VPMAXSWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxubz128rm_vpmaxubz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxubz128rm_vpmaxubz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUBZ128rm + %xmm0 = VPMAXUBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxubz256rm_vpmaxubz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxubz256rm_vpmaxubz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUBZ256rm + %ymm0 = VPMAXUBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxubzrm_vpmaxubzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxubzrm_vpmaxubzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUBZrm + %zmm0 = VPMAXUBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxuwz128rm_vpmaxuwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuwz128rm_vpmaxuwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUWZ128rm + %xmm0 = VPMAXUWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxuwz256rm_vpmaxuwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuwz256rm_vpmaxuwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUWZ256rm + %ymm0 = VPMAXUWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxuwzrm_vpmaxuwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuwzrm_vpmaxuwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUWZrm + %zmm0 = VPMAXUWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsbz128rm_vpminsbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsbz128rm_vpminsbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSBZ128rm + %xmm0 = VPMINSBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsbz256rm_vpminsbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminsbz256rm_vpminsbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSBZ256rm + %ymm0 = VPMINSBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsbzrm_vpminsbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsbzrm_vpminsbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSBZrm + %zmm0 = VPMINSBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminswz128rm_vpminswz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminswz128rm_vpminswz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSWZ128rm + %xmm0 = VPMINSWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminswz256rm_vpminswz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminswz256rm_vpminswz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSWZ256rm + %ymm0 = VPMINSWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminswzrm_vpminswzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminswzrm_vpminswzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSWZrm + %zmm0 = VPMINSWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminubz128rm_vpminubz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminubz128rm_vpminubz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUBZ128rm + %xmm0 = VPMINUBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminubz256rm_vpminubz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminubz256rm_vpminubz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUBZ256rm + %ymm0 = VPMINUBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminubzrm_vpminubzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminubzrm_vpminubzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUBZrm + %zmm0 = VPMINUBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminuwz128rm_vpminuwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminuwz128rm_vpminuwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUWZ128rm + %xmm0 = VPMINUWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminuwz256rm_vpminuwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminuwz256rm_vpminuwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUWZ256rm + %ymm0 = VPMINUWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminuwzrm_vpminuwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminuwzrm_vpminuwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUWZrm + %zmm0 = VPMINUWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxbwz128rmkz_vpmovsxbwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbwz128rmkz_vpmovsxbwz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBWZ128rmkz + %xmm0 = VPMOVSXBWZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxbwz256rmkz_vpmovsxbwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbwz256rmkz_vpmovsxbwz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBWZ256rmkz + %ymm0 = VPMOVSXBWZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxbwzrmkz_vpmovsxbwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbwzrmkz_vpmovsxbwzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBWZrmkz + %zmm0 = VPMOVSXBWZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxbwz128rmkz_vpmovzxbwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbwz128rmkz_vpmovzxbwz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBWZ128rmkz + %xmm0 = VPMOVZXBWZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxbwz256rmkz_vpmovzxbwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbwz256rmkz_vpmovzxbwz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBWZ256rmkz + %ymm0 = VPMOVZXBWZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxbwzrmkz_vpmovzxbwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbwzrmkz_vpmovzxbwzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBWZrmkz + %zmm0 = VPMOVZXBWZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhrswz128rm_vpmulhrswz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhrswz128rm_vpmulhrswz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHRSWZ128rm + %xmm0 = VPMULHRSWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhrswz256rm_vpmulhrswz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhrswz256rm_vpmulhrswz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHRSWZ256rm + %ymm0 = VPMULHRSWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhrswzrm_vpmulhrswzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhrswzrm_vpmulhrswzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHRSWZrm + %zmm0 = VPMULHRSWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhuwz128rm_vpmulhuwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhuwz128rm_vpmulhuwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHUWZ128rm + %xmm0 = VPMULHUWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhuwz256rm_vpmulhuwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhuwz256rm_vpmulhuwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHUWZ256rm + %ymm0 = VPMULHUWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhuwzrm_vpmulhuwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhuwzrm_vpmulhuwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHUWZrm + %zmm0 = VPMULHUWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhwz128rm_vpmulhwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhwz128rm_vpmulhwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHWZ128rm + %xmm0 = VPMULHWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhwz256rm_vpmulhwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhwz256rm_vpmulhwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHWZ256rm + %ymm0 = VPMULHWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulhwzrm_vpmulhwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhwzrm_vpmulhwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHWZrm + %zmm0 = VPMULHWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmullqz128rm_vpmullqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmullqz128rm_vpmullqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLQZ128rm + %xmm0 = VPMULLQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmullqz256rm_vpmullqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmullqz256rm_vpmullqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLQZ256rm + %ymm0 = VPMULLQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmullqzrm_vpmullqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmullqzrm_vpmullqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLQZrm + %zmm0 = VPMULLQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmullwz128rm_vpmullwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmullwz128rm_vpmullwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLWZ128rm + %xmm0 = VPMULLWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmullwz256rm_vpmullwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmullwz256rm_vpmullwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLWZ256rm + %ymm0 = VPMULLWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmullwzrm_vpmullwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmullwzrm_vpmullwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLWZrm + %zmm0 = VPMULLWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmultishiftqbz128rm_vpmultishiftqbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmultishiftqbz128rm_vpmultishiftqbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULTISHIFTQBZ128rm + %xmm0 = VPMULTISHIFTQBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmultishiftqbz256rm_vpmultishiftqbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmultishiftqbz256rm_vpmultishiftqbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULTISHIFTQBZ256rm + %ymm0 = VPMULTISHIFTQBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmultishiftqbzrm_vpmultishiftqbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmultishiftqbzrm_vpmultishiftqbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULTISHIFTQBZrm + %zmm0 = VPMULTISHIFTQBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsadbwz128rm_vpsadbwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsadbwz128rm_vpsadbwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSADBWZ128rm + %xmm0 = VPSADBWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsadbwz256rm_vpsadbwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsadbwz256rm_vpsadbwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSADBWZ256rm + %ymm0 = VPSADBWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsadbwz512rm_vpsadbwz512rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsadbwz512rm_vpsadbwz512rr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSADBWZ512rm + %zmm0 = VPSADBWZ512rr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshufbz128rm_vpshufbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshufbz128rm_vpshufbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFBZ128rm + %xmm0 = VPSHUFBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshufbz256rm_vpshufbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpshufbz256rm_vpshufbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFBZ256rm + %ymm0 = VPSHUFBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpshufbzrm_vpshufbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpshufbzrm_vpshufbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFBZrm + %zmm0 = VPSHUFBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshufhwz128mikz_vpshufhwz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshufhwz128mikz_vpshufhwz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFHWZ128mikz + %xmm0 = VPSHUFHWZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpshufhwz256mikz_vpshufhwz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpshufhwz256mikz_vpshufhwz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFHWZ256mikz + %ymm0 = VPSHUFHWZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpshufhwzmikz_vpshufhwzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpshufhwzmikz_vpshufhwzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFHWZmikz + %zmm0 = VPSHUFHWZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpshuflwz128mikz_vpshuflwz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshuflwz128mikz_vpshuflwz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFLWZ128mikz + %xmm0 = VPSHUFLWZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpshuflwz256mikz_vpshuflwz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpshuflwz256mikz_vpshuflwz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFLWZ256mikz + %ymm0 = VPSHUFLWZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpshuflwzmikz_vpshuflwzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpshuflwzmikz_vpshuflwzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFLWZmikz + %zmm0 = VPSHUFLWZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsllvwz128rm_vpsllvwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvwz128rm_vpsllvwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVWZ128rm + %xmm0 = VPSLLVWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvwz256rm_vpsllvwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvwz256rm_vpsllvwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVWZ256rm + %ymm0 = VPSLLVWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvwzrm_vpsllvwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvwzrm_vpsllvwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVWZrm + %zmm0 = VPSLLVWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllwz128mikz_vpsllwz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsllwz128mikz_vpsllwz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ128mikz + %xmm0 = VPSLLWZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsllwz128rm_vpsllwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllwz128rm_vpsllwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ128rm + %xmm0 = VPSLLWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllwz256mikz_vpsllwz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsllwz256mikz_vpsllwz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ256mikz + %ymm0 = VPSLLWZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsllwz256rm_vpsllwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllwz256rm_vpsllwz256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ256rm + %ymm0 = VPSLLWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllwzmikz_vpsllwzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsllwzmikz_vpsllwzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZmikz + %zmm0 = VPSLLWZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsllwzrm_vpsllwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllwzrm_vpsllwzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZrm + %zmm0 = VPSLLWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsravwz128rm_vpsravwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravwz128rm_vpsravwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVWZ128rm + %xmm0 = VPSRAVWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsravwz256rm_vpsravwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsravwz256rm_vpsravwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVWZ256rm + %ymm0 = VPSRAVWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsravwzrm_vpsravwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravwzrm_vpsravwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVWZrm + %zmm0 = VPSRAVWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrawz128mikz_vpsrawz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrawz128mikz_vpsrawz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ128mikz + %xmm0 = VPSRAWZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrawz128rm_vpsrawz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrawz128rm_vpsrawz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ128rm + %xmm0 = VPSRAWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrawz256mikz_vpsrawz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsrawz256mikz_vpsrawz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ256mikz + %ymm0 = VPSRAWZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrawz256rm_vpsrawz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrawz256rm_vpsrawz256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ256rm + %ymm0 = VPSRAWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrawzmikz_vpsrawzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrawzmikz_vpsrawzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZmikz + %zmm0 = VPSRAWZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrawzrm_vpsrawzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrawzrm_vpsrawzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZrm + %zmm0 = VPSRAWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvwz128rm_vpsrlvwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvwz128rm_vpsrlvwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVWZ128rm + %xmm0 = VPSRLVWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvwz256rm_vpsrlvwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvwz256rm_vpsrlvwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVWZ256rm + %ymm0 = VPSRLVWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvwzrm_vpsrlvwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvwzrm_vpsrlvwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVWZrm + %zmm0 = VPSRLVWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlwz128mikz_vpsrlwz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz128mikz_vpsrlwz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ128mikz + %xmm0 = VPSRLWZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrlwz128rm_vpsrlwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz128rm_vpsrlwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ128rm + %xmm0 = VPSRLWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlwz256mikz_vpsrlwz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz256mikz_vpsrlwz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ256mikz + %ymm0 = VPSRLWZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrlwz256rm_vpsrlwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz256rm_vpsrlwz256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ256rm + %ymm0 = VPSRLWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlwzmikz_vpsrlwzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlwzmikz_vpsrlwzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZmikz + %zmm0 = VPSRLWZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrlwzrm_vpsrlwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlwzrm_vpsrlwzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZrm + %zmm0 = VPSRLWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubbz128rm_vpsubbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubbz128rm_vpsubbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBBZ128rm + %xmm0 = VPSUBBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubbz256rm_vpsubbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubbz256rm_vpsubbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBBZ256rm + %ymm0 = VPSUBBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubbzrm_vpsubbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubbzrm_vpsubbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBBZrm + %zmm0 = VPSUBBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubsbz128rm_vpsubsbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubsbz128rm_vpsubsbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSBZ128rm + %xmm0 = VPSUBSBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubsbz256rm_vpsubsbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubsbz256rm_vpsubsbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSBZ256rm + %ymm0 = VPSUBSBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubsbzrm_vpsubsbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubsbzrm_vpsubsbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSBZrm + %zmm0 = VPSUBSBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubswz128rm_vpsubswz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubswz128rm_vpsubswz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSWZ128rm + %xmm0 = VPSUBSWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubswz256rm_vpsubswz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubswz256rm_vpsubswz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSWZ256rm + %ymm0 = VPSUBSWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubswzrm_vpsubswzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubswzrm_vpsubswzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSWZrm + %zmm0 = VPSUBSWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubusbz128rm_vpsubusbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubusbz128rm_vpsubusbz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSBZ128rm + %xmm0 = VPSUBUSBZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubusbz256rm_vpsubusbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubusbz256rm_vpsubusbz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSBZ256rm + %ymm0 = VPSUBUSBZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubusbzrm_vpsubusbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubusbzrm_vpsubusbzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSBZrm + %zmm0 = VPSUBUSBZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubuswz128rm_vpsubuswz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubuswz128rm_vpsubuswz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSWZ128rm + %xmm0 = VPSUBUSWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubuswz256rm_vpsubuswz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubuswz256rm_vpsubuswz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSWZ256rm + %ymm0 = VPSUBUSWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubuswzrm_vpsubuswzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubuswzrm_vpsubuswzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSWZrm + %zmm0 = VPSUBUSWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubwz128rm_vpsubwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubwz128rm_vpsubwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBWZ128rm + %xmm0 = VPSUBWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubwz256rm_vpsubwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubwz256rm_vpsubwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBWZ256rm + %ymm0 = VPSUBWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubwzrm_vpsubwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubwzrm_vpsubwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBWZrm + %zmm0 = VPSUBWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vptestmbz128rm_vptestmbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmbz128rm_vptestmbz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMBZ128rm + %k1 = VPTESTMBZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestmbz256rm_vptestmbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestmbz256rm_vptestmbz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMBZ256rm + %k1 = VPTESTMBZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vptestmbzrm_vptestmbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmbzrm_vptestmbzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMBZrm + %k1 = VPTESTMBZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestmwz128rm_vptestmwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmwz128rm_vptestmwz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMWZ128rm + %k1 = VPTESTMWZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestmwz256rm_vptestmwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestmwz256rm_vptestmwz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMWZ256rm + %k1 = VPTESTMWZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vptestmwzrm_vptestmwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmwzrm_vptestmwzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMWZrm + %k1 = VPTESTMWZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmbz128rm_vptestnmbz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmbz128rm_vptestnmbz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMBZ128rm + %k1 = VPTESTNMBZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmbz256rm_vptestnmbz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmbz256rm_vptestnmbz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMBZ256rm + %k1 = VPTESTNMBZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmbzrm_vptestnmbzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmbzrm_vptestnmbzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMBZrm + %k1 = VPTESTNMBZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmwz128rm_vptestnmwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmwz128rm_vptestnmwz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMWZ128rm + %k1 = VPTESTNMWZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmwz256rm_vptestnmwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmwz256rm_vptestnmwz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMWZ256rm + %k1 = VPTESTNMWZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmwzrm_vptestnmwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmwzrm_vptestnmwzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMWZrm + %k1 = VPTESTNMWZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhbwz128rm_vpunpckhbwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhbwz128rm_vpunpckhbwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHBWZ128rm + %xmm0 = VPUNPCKHBWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhbwz256rm_vpunpckhbwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhbwz256rm_vpunpckhbwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHBWZ256rm + %ymm0 = VPUNPCKHBWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhbwzrm_vpunpckhbwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhbwzrm_vpunpckhbwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHBWZrm + %zmm0 = VPUNPCKHBWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhwdz128rm_vpunpckhwdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhwdz128rm_vpunpckhwdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHWDZ128rm + %xmm0 = VPUNPCKHWDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhwdz256rm_vpunpckhwdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhwdz256rm_vpunpckhwdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHWDZ256rm + %ymm0 = VPUNPCKHWDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhwdzrm_vpunpckhwdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhwdzrm_vpunpckhwdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHWDZrm + %zmm0 = VPUNPCKHWDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklbwz128rm_vpunpcklbwz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklbwz128rm_vpunpcklbwz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLBWZ128rm + %xmm0 = VPUNPCKLBWZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklbwz256rm_vpunpcklbwz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklbwz256rm_vpunpcklbwz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLBWZ256rm + %ymm0 = VPUNPCKLBWZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklbwzrm_vpunpcklbwzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklbwzrm_vpunpcklbwzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLBWZrm + %zmm0 = VPUNPCKLBWZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklwdz128rm_vpunpcklwdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklwdz128rm_vpunpcklwdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLWDZ128rm + %xmm0 = VPUNPCKLWDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklwdz256rm_vpunpcklwdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklwdz256rm_vpunpcklwdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLWDZ256rm + %ymm0 = VPUNPCKLWDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklwdzrm_vpunpcklwdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklwdzrm_vpunpcklwdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLWDZrm + %zmm0 = VPUNPCKLWDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vrangepdz128rmi_vrangepdz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepdz128rmi_vrangepdz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZ128rmi + %xmm0 = VRANGEPDZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrangepdz256rmi_vrangepdz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vrangepdz256rmi_vrangepdz256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZ256rmi + %ymm0 = VRANGEPDZ256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrangepdzrmbi_vrangepdzrrib_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepdzrmbi_vrangepdzrrib_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZrmbi + %zmm0 = VRANGEPDZrrib undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrangepdzrmi_vrangepdzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepdzrmi_vrangepdzrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZrmi + %zmm0 = VRANGEPDZrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrangepsz128rmi_vrangepsz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepsz128rmi_vrangepsz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZ128rmi + %xmm0 = VRANGEPSZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrangepsz256rmi_vrangepsz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vrangepsz256rmi_vrangepsz256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZ256rmi + %ymm0 = VRANGEPSZ256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrangepszrmbi_vrangepszrrib_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepszrmbi_vrangepszrrib_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZrmbi + %zmm0 = VRANGEPSZrrib undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrangepszrmi_vrangepszrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepszrmi_vrangepszrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZrmi + %zmm0 = VRANGEPSZrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrangesdz128rmi_vrangesdz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrangesdz128rmi_vrangesdz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGESDZ128rmi + %xmm0 = VRANGESDZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrangessz128rmi_vrangessz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrangessz128rmi_vrangessz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGESSZ128rmi + %xmm0 = VRANGESSZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrcp28pdmbkz_vrcp28pdrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp28pdmbkz_vrcp28pdrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PDmbkz + %zmm0 = VRCP28PDrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrcp28pdmkz_vrcp28pdrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp28pdmkz_vrcp28pdrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PDmkz + %zmm0 = VRCP28PDrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrcp28psmbkz_vrcp28psrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp28psmbkz_vrcp28psrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PSmbkz + %zmm0 = VRCP28PSrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrcp28psmkz_vrcp28psrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp28psmkz_vrcp28psrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PSmkz + %zmm0 = VRCP28PSrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrcp28sdm_vrcp28sdr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp28sdm_vrcp28sdr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28SDm + %xmm0 = VRCP28SDr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vrcp28ssm_vrcp28ssr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp28ssm_vrcp28ssr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28SSm + %xmm0 = VRCP28SSr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vreducepdz128rmikz_vreducepdz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepdz128rmikz_vreducepdz128rrikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZ128rmikz + %xmm0 = VREDUCEPDZ128rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vreducepdz256rmikz_vreducepdz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vreducepdz256rmikz_vreducepdz256rrikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZ256rmikz + %ymm0 = VREDUCEPDZ256rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vreducepdzrmbikz_vreducepdzrribkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepdzrmbikz_vreducepdzrribkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZrmbikz + %zmm0 = VREDUCEPDZrribkz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vreducepdzrmikz_vreducepdzrrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepdzrmikz_vreducepdzrrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZrmikz + %zmm0 = VREDUCEPDZrrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vreducepsz128rmikz_vreducepsz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepsz128rmikz_vreducepsz128rrikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZ128rmikz + %xmm0 = VREDUCEPSZ128rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vreducepsz256rmikz_vreducepsz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vreducepsz256rmikz_vreducepsz256rrikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZ256rmikz + %ymm0 = VREDUCEPSZ256rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vreducepszrmbikz_vreducepszrribkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepszrmbikz_vreducepszrribkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZrmbikz + %zmm0 = VREDUCEPSZrribkz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vreducepszrmikz_vreducepszrrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vreducepszrmikz_vreducepszrrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZrmikz + %zmm0 = VREDUCEPSZrrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vreducesdz128rmi_vreducesdz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vreducesdz128rmi_vreducesdz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCESDZ128rmi + %xmm0 = VREDUCESDZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vreducessz128rmi_vreducessz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vreducessz128rmi_vreducessz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCESSZ128rmi + %xmm0 = VREDUCESSZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrsqrt28pdmbkz_vrsqrt28pdrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28pdmbkz_vrsqrt28pdrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PDmbkz + %zmm0 = VRSQRT28PDrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrsqrt28pdmkz_vrsqrt28pdrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28pdmkz_vrsqrt28pdrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PDmkz + %zmm0 = VRSQRT28PDrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrsqrt28psmbkz_vrsqrt28psrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28psmbkz_vrsqrt28psrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PSmbkz + %zmm0 = VRSQRT28PSrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrsqrt28psmkz_vrsqrt28psrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28psmkz_vrsqrt28psrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PSmkz + %zmm0 = VRSQRT28PSrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrsqrt28sdm_vrsqrt28sdr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28sdm_vrsqrt28sdr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28SDm + %xmm0 = VRSQRT28SDr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vrsqrt28ssm_vrsqrt28ssr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28ssm_vrsqrt28ssr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28SSm + %xmm0 = VRSQRT28SSr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vxorpdz128rm_vxorpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vxorpdz128rm_vxorpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPDZ128rm + %xmm0 = VXORPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vxorpdz256rm_vxorpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vxorpdz256rm_vxorpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPDZ256rm + %ymm0 = VXORPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vxorpdzrm_vxorpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vxorpdzrm_vxorpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPDZrm + %zmm0 = VXORPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vxorpsz128rm_vxorpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vxorpsz128rm_vxorpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPSZ128rm + %xmm0 = VXORPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vxorpsz256rm_vxorpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vxorpsz256rm_vxorpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPSZ256rm + %ymm0 = VXORPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vxorpszrm_vxorpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vxorpszrm_vxorpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPSZrm + %zmm0 = VXORPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vandnpdz128rmkz_vandnpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandnpdz128rmkz_vandnpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPDZ128rmkz + %xmm0 = VANDNPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vandnpdz256rmkz_vandnpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandnpdz256rmkz_vandnpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPDZ256rmkz + %ymm0 = VANDNPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vandnpdzrmkz_vandnpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vandnpdzrmkz_vandnpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPDZrmkz + %zmm0 = VANDNPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vandnpsz128rmkz_vandnpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandnpsz128rmkz_vandnpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPSZ128rmkz + %xmm0 = VANDNPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vandnpsz256rmkz_vandnpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandnpsz256rmkz_vandnpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPSZ256rmkz + %ymm0 = VANDNPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vandnpszrmkz_vandnpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vandnpszrmkz_vandnpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPSZrmkz + %zmm0 = VANDNPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vandpdz128rmkz_vandpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandpdz128rmkz_vandpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPDZ128rmkz + %xmm0 = VANDPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vandpdz256rmkz_vandpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandpdz256rmkz_vandpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPDZ256rmkz + %ymm0 = VANDPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vandpdzrmkz_vandpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vandpdzrmkz_vandpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPDZrmkz + %zmm0 = VANDPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vandpsz128rmkz_vandpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vandpsz128rmkz_vandpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPSZ128rmkz + %xmm0 = VANDPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vandpsz256rmkz_vandpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vandpsz256rmkz_vandpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPSZ256rmkz + %ymm0 = VANDPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vandpszrmkz_vandpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vandpszrmkz_vandpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPSZrmkz + %zmm0 = VANDPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vbroadcastf32x2z256mk_vbroadcastf32x2z256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vbroadcastf32x2z256mk_vbroadcastf32x2z256rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTF32X2Z256mk + %ymm0 = VBROADCASTF32X2Z256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vbroadcastf32x2zmk_vbroadcastf32x2zrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vbroadcastf32x2zmk_vbroadcastf32x2zrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTF32X2Zmk + %zmm0 = VBROADCASTF32X2Zrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vbroadcasti32x2z128mk_vbroadcasti32x2z128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vbroadcasti32x2z128mk_vbroadcasti32x2z128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTI32X2Z128mk + %xmm0 = VBROADCASTI32X2Z128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vbroadcasti32x2z256mk_vbroadcasti32x2z256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vbroadcasti32x2z256mk_vbroadcasti32x2z256rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTI32X2Z256mk + %ymm0 = VBROADCASTI32X2Z256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vbroadcasti32x2zmk_vbroadcasti32x2zrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vbroadcasti32x2zmk_vbroadcasti32x2zrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTI32X2Zmk + %zmm0 = VBROADCASTI32X2Zrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2qqz128rmk_vcvtpd2qqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2qqz128rmk_vcvtpd2qqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2QQZ128rmk + %xmm0 = VCVTPD2QQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2qqz256rmk_vcvtpd2qqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2qqz256rmk_vcvtpd2qqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2QQZ256rmk + %ymm0 = VCVTPD2QQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2qqzrmk_vcvtpd2qqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2qqzrmk_vcvtpd2qqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2QQZrmk + %zmm0 = VCVTPD2QQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2uqqz128rmk_vcvtpd2uqqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2uqqz128rmk_vcvtpd2uqqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UQQZ128rmk + %xmm0 = VCVTPD2UQQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2uqqz256rmk_vcvtpd2uqqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2uqqz256rmk_vcvtpd2uqqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UQQZ256rmk + %ymm0 = VCVTPD2UQQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2uqqzrmk_vcvtpd2uqqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2uqqzrmk_vcvtpd2uqqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UQQZrmk + %zmm0 = VCVTPD2UQQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2qqz128rmk_vcvtps2qqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2qqz128rmk_vcvtps2qqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2QQZ128rmk + %xmm0 = VCVTPS2QQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2qqz256rmk_vcvtps2qqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2qqz256rmk_vcvtps2qqz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2QQZ256rmk + %ymm0 = VCVTPS2QQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2qqzrmk_vcvtps2qqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2qqzrmk_vcvtps2qqzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2QQZrmk + %zmm0 = VCVTPS2QQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2uqqz128rmk_vcvtps2uqqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2uqqz128rmk_vcvtps2uqqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UQQZ128rmk + %xmm0 = VCVTPS2UQQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2uqqz256rmk_vcvtps2uqqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2uqqz256rmk_vcvtps2uqqz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UQQZ256rmk + %ymm0 = VCVTPS2UQQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2uqqzrmk_vcvtps2uqqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2uqqzrmk_vcvtps2uqqzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UQQZrmk + %zmm0 = VCVTPS2UQQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtqq2pdz128rmk_vcvtqq2pdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pdz128rmk_vcvtqq2pdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PDZ128rmk + %xmm0 = VCVTQQ2PDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtqq2pdz256rmk_vcvtqq2pdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pdz256rmk_vcvtqq2pdz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PDZ256rmk + %ymm0 = VCVTQQ2PDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtqq2pdzrmk_vcvtqq2pdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pdzrmk_vcvtqq2pdzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PDZrmk + %zmm0 = VCVTQQ2PDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtqq2psz128rmk_vcvtqq2psz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2psz128rmk_vcvtqq2psz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PSZ128rmk + %xmm0 = VCVTQQ2PSZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtqq2psz256rmk_vcvtqq2psz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2psz256rmk_vcvtqq2psz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PSZ256rmk + %xmm0 = VCVTQQ2PSZ256rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtqq2pszrmk_vcvtqq2pszrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtqq2pszrmk_vcvtqq2pszrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTQQ2PSZrmk + %ymm0 = VCVTQQ2PSZrrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqz128rmk_vcvttpd2qqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqz128rmk_vcvttpd2qqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZ128rmk + %xmm0 = VCVTTPD2QQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqz256rmk_vcvttpd2qqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqz256rmk_vcvttpd2qqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZ256rmk + %ymm0 = VCVTTPD2QQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqzrmbk_vcvttpd2qqzrrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqzrmbk_vcvttpd2qqzrrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZrmbk + %zmm0 = VCVTTPD2QQZrrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2qqzrmk_vcvttpd2qqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2qqzrmk_vcvttpd2qqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2QQZrmk + %zmm0 = VCVTTPD2QQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqz128rmk_vcvttpd2uqqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqz128rmk_vcvttpd2uqqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZ128rmk + %xmm0 = VCVTTPD2UQQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqz256rmk_vcvttpd2uqqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqz256rmk_vcvttpd2uqqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZ256rmk + %ymm0 = VCVTTPD2UQQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqzrmbk_vcvttpd2uqqzrrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqzrmbk_vcvttpd2uqqzrrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZrmbk + %zmm0 = VCVTTPD2UQQZrrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2uqqzrmk_vcvttpd2uqqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2uqqzrmk_vcvttpd2uqqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UQQZrmk + %zmm0 = VCVTTPD2UQQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2qqz128rmk_vcvttps2qqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqz128rmk_vcvttps2qqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZ128rmk + %xmm0 = VCVTTPS2QQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2qqz256rmk_vcvttps2qqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqz256rmk_vcvttps2qqz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZ256rmk + %ymm0 = VCVTTPS2QQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2qqzrmbk_vcvttps2qqzrrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqzrmbk_vcvttps2qqzrrbk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZrmbk + %zmm0 = VCVTTPS2QQZrrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2qqzrmk_vcvttps2qqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2qqzrmk_vcvttps2qqzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2QQZrmk + %zmm0 = VCVTTPS2QQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqz128rmk_vcvttps2uqqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqz128rmk_vcvttps2uqqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZ128rmk + %xmm0 = VCVTTPS2UQQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqz256rmk_vcvttps2uqqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqz256rmk_vcvttps2uqqz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZ256rmk + %ymm0 = VCVTTPS2UQQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqzrmbk_vcvttps2uqqzrrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqzrmbk_vcvttps2uqqzrrbk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZrmbk + %zmm0 = VCVTTPS2UQQZrrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2uqqzrmk_vcvttps2uqqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2uqqzrmk_vcvttps2uqqzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UQQZrmk + %zmm0 = VCVTTPS2UQQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pdz128rmk_vcvtuqq2pdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pdz128rmk_vcvtuqq2pdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PDZ128rmk + %xmm0 = VCVTUQQ2PDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pdz256rmk_vcvtuqq2pdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pdz256rmk_vcvtuqq2pdz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PDZ256rmk + %ymm0 = VCVTUQQ2PDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pdzrmk_vcvtuqq2pdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pdzrmk_vcvtuqq2pdzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PDZrmk + %zmm0 = VCVTUQQ2PDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtuqq2psz128rmk_vcvtuqq2psz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2psz128rmk_vcvtuqq2psz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PSZ128rmk + %xmm0 = VCVTUQQ2PSZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtuqq2psz256rmk_vcvtuqq2psz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2psz256rmk_vcvtuqq2psz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PSZ256rmk + %xmm0 = VCVTUQQ2PSZ256rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtuqq2pszrmk_vcvtuqq2pszrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtuqq2pszrmk_vcvtuqq2pszrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUQQ2PSZrmk + %ymm0 = VCVTUQQ2PSZrrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vdbpsadbwz128rmikz_vdbpsadbwz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdbpsadbwz128rmikz_vdbpsadbwz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDBPSADBWZ128rmikz + %xmm0 = VDBPSADBWZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vdbpsadbwz256rmikz_vdbpsadbwz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vdbpsadbwz256rmikz_vdbpsadbwz256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDBPSADBWZ256rmikz + %ymm0 = VDBPSADBWZ256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vdbpsadbwzrmikz_vdbpsadbwzrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vdbpsadbwzrmikz_vdbpsadbwzrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDBPSADBWZrmikz + %zmm0 = VDBPSADBWZrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vexp2pdmbk_vexp2pdrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vexp2pdmbk_vexp2pdrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PDmbk + %zmm0 = VEXP2PDrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vexp2pdmk_vexp2pdrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vexp2pdmk_vexp2pdrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PDmk + %zmm0 = VEXP2PDrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vexp2psmbk_vexp2psrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vexp2psmbk_vexp2psrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PSmbk + %zmm0 = VEXP2PSrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vexp2psmk_vexp2psrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vexp2psmk_vexp2psrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXP2PSmk + %zmm0 = VEXP2PSrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vinsertf32x8zrmkz_vinsertf32x8zrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf32x8zrmkz_vinsertf32x8zrrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF32x8Zrmkz + %zmm0 = VINSERTF32x8Zrrkz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vinsertf64x2z256rmkz_vinsertf64x2z256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf64x2z256rmkz_vinsertf64x2z256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF64x2Z256rmkz + %ymm0 = VINSERTF64x2Z256rrkz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vinsertf64x2zrmkz_vinsertf64x2zrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf64x2zrmkz_vinsertf64x2zrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF64x2Zrmkz + %zmm0 = VINSERTF64x2Zrrkz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vinserti32x8zrmkz_vinserti32x8zrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vinserti32x8zrmkz_vinserti32x8zrrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI32x8Zrmkz + %zmm0 = VINSERTI32x8Zrrkz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vinserti64x2z256rmkz_vinserti64x2z256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinserti64x2z256rmkz_vinserti64x2z256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI64x2Z256rmkz + %ymm0 = VINSERTI64x2Z256rrkz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vinserti64x2zrmkz_vinserti64x2zrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinserti64x2zrmkz_vinserti64x2zrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI64x2Zrmkz + %zmm0 = VINSERTI64x2Zrrkz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vmovdqu16z128rmk_vmovdqu16z128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu16z128rmk_vmovdqu16z128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU16Z128rmk + %xmm0 = VMOVDQU16Z128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqu16z256rmk_vmovdqu16z256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu16z256rmk_vmovdqu16z256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU16Z256rmk + %ymm0 = VMOVDQU16Z256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqu16zrmk_vmovdqu16zrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu16zrmk_vmovdqu16zrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU16Zrmk + %zmm0 = VMOVDQU16Zrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqu8z128rmk_vmovdqu8z128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu8z128rmk_vmovdqu8z128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU8Z128rmk + %xmm0 = VMOVDQU8Z128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqu8z256rmk_vmovdqu8z256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu8z256rmk_vmovdqu8z256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU8Z256rmk + %ymm0 = VMOVDQU8Z256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqu8zrmk_vmovdqu8zrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu8zrmk_vmovdqu8zrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU8Zrmk + %zmm0 = VMOVDQU8Zrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vorpdz128rmkz_vorpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vorpdz128rmkz_vorpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPDZ128rmkz + %xmm0 = VORPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vorpdz256rmkz_vorpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vorpdz256rmkz_vorpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPDZ256rmkz + %ymm0 = VORPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vorpdzrmkz_vorpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vorpdzrmkz_vorpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPDZrmkz + %zmm0 = VORPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vorpsz128rmkz_vorpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vorpsz128rmkz_vorpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPSZ128rmkz + %xmm0 = VORPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vorpsz256rmkz_vorpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vorpsz256rmkz_vorpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPSZ256rmkz + %ymm0 = VORPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vorpszrmkz_vorpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vorpszrmkz_vorpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPSZrmkz + %zmm0 = VORPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpabsbz128rmk_vpabsbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpabsbz128rmk_vpabsbz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSBZ128rmk + %xmm0 = VPABSBZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpabsbz256rmk_vpabsbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpabsbz256rmk_vpabsbz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSBZ256rmk + %ymm0 = VPABSBZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpabsbzrmk_vpabsbzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpabsbzrmk_vpabsbzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSBZrmk + %zmm0 = VPABSBZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpabswz128rmk_vpabswz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpabswz128rmk_vpabswz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSWZ128rmk + %xmm0 = VPABSWZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpabswz256rmk_vpabswz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpabswz256rmk_vpabswz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSWZ256rmk + %ymm0 = VPABSWZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpabswzrmk_vpabswzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpabswzrmk_vpabswzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSWZrmk + %zmm0 = VPABSWZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpackssdwz128rmkz_vpackssdwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpackssdwz128rmkz_vpackssdwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSDWZ128rmkz + %xmm0 = VPACKSSDWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpackssdwz256rmkz_vpackssdwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpackssdwz256rmkz_vpackssdwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSDWZ256rmkz + %ymm0 = VPACKSSDWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpackssdwzrmkz_vpackssdwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpackssdwzrmkz_vpackssdwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSDWZrmkz + %zmm0 = VPACKSSDWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpacksswbz128rmkz_vpacksswbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpacksswbz128rmkz_vpacksswbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSWBZ128rmkz + %xmm0 = VPACKSSWBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpacksswbz256rmkz_vpacksswbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpacksswbz256rmkz_vpacksswbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSWBZ256rmkz + %ymm0 = VPACKSSWBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpacksswbzrmkz_vpacksswbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpacksswbzrmkz_vpacksswbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSWBZrmkz + %zmm0 = VPACKSSWBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpackusdwz128rmkz_vpackusdwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpackusdwz128rmkz_vpackusdwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSDWZ128rmkz + %xmm0 = VPACKUSDWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpackusdwz256rmkz_vpackusdwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpackusdwz256rmkz_vpackusdwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSDWZ256rmkz + %ymm0 = VPACKUSDWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpackusdwzrmkz_vpackusdwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpackusdwzrmkz_vpackusdwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSDWZrmkz + %zmm0 = VPACKUSDWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpackuswbz128rmkz_vpackuswbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpackuswbz128rmkz_vpackuswbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSWBZ128rmkz + %xmm0 = VPACKUSWBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpackuswbz256rmkz_vpackuswbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpackuswbz256rmkz_vpackuswbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSWBZ256rmkz + %ymm0 = VPACKUSWBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpackuswbzrmkz_vpackuswbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpackuswbzrmkz_vpackuswbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSWBZrmkz + %zmm0 = VPACKUSWBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddbz128rmkz_vpaddbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddbz128rmkz_vpaddbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDBZ128rmkz + %xmm0 = VPADDBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddbz256rmkz_vpaddbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddbz256rmkz_vpaddbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDBZ256rmkz + %ymm0 = VPADDBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddbzrmkz_vpaddbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddbzrmkz_vpaddbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDBZrmkz + %zmm0 = VPADDBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddsbz128rmkz_vpaddsbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddsbz128rmkz_vpaddsbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSBZ128rmkz + %xmm0 = VPADDSBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddsbz256rmkz_vpaddsbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddsbz256rmkz_vpaddsbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSBZ256rmkz + %ymm0 = VPADDSBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddsbzrmkz_vpaddsbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddsbzrmkz_vpaddsbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSBZrmkz + %zmm0 = VPADDSBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddswz128rmkz_vpaddswz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddswz128rmkz_vpaddswz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSWZ128rmkz + %xmm0 = VPADDSWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddswz256rmkz_vpaddswz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddswz256rmkz_vpaddswz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSWZ256rmkz + %ymm0 = VPADDSWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddswzrmkz_vpaddswzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddswzrmkz_vpaddswzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSWZrmkz + %zmm0 = VPADDSWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddusbz128rmkz_vpaddusbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddusbz128rmkz_vpaddusbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSBZ128rmkz + %xmm0 = VPADDUSBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddusbz256rmkz_vpaddusbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddusbz256rmkz_vpaddusbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSBZ256rmkz + %ymm0 = VPADDUSBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddusbzrmkz_vpaddusbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddusbzrmkz_vpaddusbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSBZrmkz + %zmm0 = VPADDUSBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpadduswz128rmkz_vpadduswz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpadduswz128rmkz_vpadduswz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSWZ128rmkz + %xmm0 = VPADDUSWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpadduswz256rmkz_vpadduswz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpadduswz256rmkz_vpadduswz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSWZ256rmkz + %ymm0 = VPADDUSWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpadduswzrmkz_vpadduswzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpadduswzrmkz_vpadduswzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSWZrmkz + %zmm0 = VPADDUSWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddwz128rmkz_vpaddwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddwz128rmkz_vpaddwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDWZ128rmkz + %xmm0 = VPADDWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddwz256rmkz_vpaddwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddwz256rmkz_vpaddwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDWZ256rmkz + %ymm0 = VPADDWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddwzrmkz_vpaddwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddwzrmkz_vpaddwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDWZrmkz + %zmm0 = VPADDWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpalignrz128rmikz_vpalignrz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpalignrz128rmikz_vpalignrz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPALIGNRZ128rmikz + %xmm0 = VPALIGNRZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpalignrz256rmikz_vpalignrz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpalignrz256rmikz_vpalignrz256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPALIGNRZ256rmikz + %ymm0 = VPALIGNRZ256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpalignrzrmikz_vpalignrzrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpalignrzrmikz_vpalignrzrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPALIGNRZrmikz + %zmm0 = VPALIGNRZrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpavgbz128rmkz_vpavgbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpavgbz128rmkz_vpavgbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGBZ128rmkz + %xmm0 = VPAVGBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpavgbz256rmkz_vpavgbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpavgbz256rmkz_vpavgbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGBZ256rmkz + %ymm0 = VPAVGBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpavgbzrmkz_vpavgbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpavgbzrmkz_vpavgbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGBZrmkz + %zmm0 = VPAVGBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpavgwz128rmkz_vpavgwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpavgwz128rmkz_vpavgwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGWZ128rmkz + %xmm0 = VPAVGWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpavgwz256rmkz_vpavgwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpavgwz256rmkz_vpavgwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGWZ256rmkz + %ymm0 = VPAVGWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpavgwzrmkz_vpavgwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpavgwzrmkz_vpavgwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGWZrmkz + %zmm0 = VPAVGWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmbz128rmk_vpblendmbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmbz128rmk_vpblendmbz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMBZ128rmk + %xmm0 = VPBLENDMBZ128rrk undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmbz128rmkz_vpblendmbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmbz128rmkz_vpblendmbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMBZ128rmkz + %xmm0 = VPBLENDMBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmbz256rmk_vpblendmbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmbz256rmk_vpblendmbz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMBZ256rmk + %ymm0 = VPBLENDMBZ256rrk undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmbz256rmkz_vpblendmbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmbz256rmkz_vpblendmbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMBZ256rmkz + %ymm0 = VPBLENDMBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmbzrmk_vpblendmbzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmbzrmk_vpblendmbzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMBZrmk + %zmm0 = VPBLENDMBZrrk undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmbzrmkz_vpblendmbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmbzrmkz_vpblendmbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMBZrmkz + %zmm0 = VPBLENDMBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmwz128rmk_vpblendmwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmwz128rmk_vpblendmwz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMWZ128rmk + %xmm0 = VPBLENDMWZ128rrk undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmwz128rmkz_vpblendmwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmwz128rmkz_vpblendmwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMWZ128rmkz + %xmm0 = VPBLENDMWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmwz256rmk_vpblendmwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmwz256rmk_vpblendmwz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMWZ256rmk + %ymm0 = VPBLENDMWZ256rrk undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmwz256rmkz_vpblendmwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmwz256rmkz_vpblendmwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMWZ256rmkz + %ymm0 = VPBLENDMWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmwzrmk_vpblendmwzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmwzrmk_vpblendmwzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMWZrmk + %zmm0 = VPBLENDMWZrrk undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmwzrmkz_vpblendmwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmwzrmkz_vpblendmwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMWZrmkz + %zmm0 = VPBLENDMWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastbz128mk_vpbroadcastbz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastbz128mk_vpbroadcastbz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTBZ128mk + %xmm0 = VPBROADCASTBZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastbz256mk_vpbroadcastbz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastbz256mk_vpbroadcastbz256rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTBZ256mk + %ymm0 = VPBROADCASTBZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastbzmk_vpbroadcastbzrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastbzmk_vpbroadcastbzrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTBZmk + %zmm0 = VPBROADCASTBZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastwz128mk_vpbroadcastwz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastwz128mk_vpbroadcastwz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTWZ128mk + %xmm0 = VPBROADCASTWZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastwz256mk_vpbroadcastwz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastwz256mk_vpbroadcastwz256rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTWZ256mk + %ymm0 = VPBROADCASTWZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastwzmk_vpbroadcastwzrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastwzmk_vpbroadcastwzrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTWZmk + %zmm0 = VPBROADCASTWZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpcmpbz128rmik_vpcmpbz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbz128rmik_vpcmpbz128rrik_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZ128rmik + %k1 = VPCMPBZ128rrik undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpbz128rmik_alt_vpcmpbz128rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbz128rmik_alt_vpcmpbz128rrik_alt_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZ128rmik_alt + %k1 = VPCMPBZ128rrik_alt undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpbz256rmik_vpcmpbz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbz256rmik_vpcmpbz256rrik_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZ256rmik + %k1 = VPCMPBZ256rrik undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpbz256rmik_alt_vpcmpbz256rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbz256rmik_alt_vpcmpbz256rrik_alt_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZ256rmik_alt + %k1 = VPCMPBZ256rrik_alt undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpbzrmik_vpcmpbzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbzrmik_vpcmpbzrrik_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZrmik + %k1 = VPCMPBZrrik undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpbzrmik_alt_vpcmpbzrrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpbzrmik_alt_vpcmpbzrrik_alt_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPBZrmik_alt + %k1 = VPCMPBZrrik_alt undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpeqbz128rmk_vpcmpeqbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqbz128rmk_vpcmpeqbz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQBZ128rmk + %k1 = VPCMPEQBZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpeqbz256rmk_vpcmpeqbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqbz256rmk_vpcmpeqbz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQBZ256rmk + %k1 = VPCMPEQBZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpeqbzrmk_vpcmpeqbzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqbzrmk_vpcmpeqbzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQBZrmk + %k1 = VPCMPEQBZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpeqwz128rmk_vpcmpeqwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqwz128rmk_vpcmpeqwz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQWZ128rmk + %k1 = VPCMPEQWZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpeqwz256rmk_vpcmpeqwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqwz256rmk_vpcmpeqwz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQWZ256rmk + %k1 = VPCMPEQWZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpeqwzrmk_vpcmpeqwzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqwzrmk_vpcmpeqwzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQWZrmk + %k1 = VPCMPEQWZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtbz128rmk_vpcmpgtbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtbz128rmk_vpcmpgtbz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTBZ128rmk + %k1 = VPCMPGTBZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtbz256rmk_vpcmpgtbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtbz256rmk_vpcmpgtbz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTBZ256rmk + %k1 = VPCMPGTBZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtbzrmk_vpcmpgtbzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtbzrmk_vpcmpgtbzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTBZrmk + %k1 = VPCMPGTBZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtwz128rmk_vpcmpgtwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtwz128rmk_vpcmpgtwz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTWZ128rmk + %k1 = VPCMPGTWZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtwz256rmk_vpcmpgtwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtwz256rmk_vpcmpgtwz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTWZ256rmk + %k1 = VPCMPGTWZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtwzrmk_vpcmpgtwzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtwzrmk_vpcmpgtwzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTWZrmk + %k1 = VPCMPGTWZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpubz128rmik_vpcmpubz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubz128rmik_vpcmpubz128rrik_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZ128rmik + %k1 = VPCMPUBZ128rrik undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpubz128rmik_alt_vpcmpubz128rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubz128rmik_alt_vpcmpubz128rrik_alt_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZ128rmik_alt + %k1 = VPCMPUBZ128rrik_alt undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpubz256rmik_vpcmpubz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubz256rmik_vpcmpubz256rrik_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZ256rmik + %k1 = VPCMPUBZ256rrik undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpubz256rmik_alt_vpcmpubz256rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubz256rmik_alt_vpcmpubz256rrik_alt_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZ256rmik_alt + %k1 = VPCMPUBZ256rrik_alt undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpubzrmik_vpcmpubzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubzrmik_vpcmpubzrrik_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZrmik + %k1 = VPCMPUBZrrik undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpubzrmik_alt_vpcmpubzrrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpubzrmik_alt_vpcmpubzrrik_alt_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUBZrmik_alt + %k1 = VPCMPUBZrrik_alt undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwz128rmik_vpcmpuwz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwz128rmik_vpcmpuwz128rrik_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZ128rmik + %k1 = VPCMPUWZ128rrik undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwz128rmik_alt_vpcmpuwz128rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwz128rmik_alt_vpcmpuwz128rrik_alt_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZ128rmik_alt + %k1 = VPCMPUWZ128rrik_alt undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwz256rmik_vpcmpuwz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwz256rmik_vpcmpuwz256rrik_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZ256rmik + %k1 = VPCMPUWZ256rrik undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwz256rmik_alt_vpcmpuwz256rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwz256rmik_alt_vpcmpuwz256rrik_alt_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZ256rmik_alt + %k1 = VPCMPUWZ256rrik_alt undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwzrmik_vpcmpuwzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwzrmik_vpcmpuwzrrik_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZrmik + %k1 = VPCMPUWZrrik undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuwzrmik_alt_vpcmpuwzrrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuwzrmik_alt_vpcmpuwzrrik_alt_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUWZrmik_alt + %k1 = VPCMPUWZrrik_alt undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwz128rmik_vpcmpwz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwz128rmik_vpcmpwz128rrik_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZ128rmik + %k1 = VPCMPWZ128rrik undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwz128rmik_alt_vpcmpwz128rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwz128rmik_alt_vpcmpwz128rrik_alt_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZ128rmik_alt + %k1 = VPCMPWZ128rrik_alt undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwz256rmik_vpcmpwz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwz256rmik_vpcmpwz256rrik_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZ256rmik + %k1 = VPCMPWZ256rrik undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwz256rmik_alt_vpcmpwz256rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwz256rmik_alt_vpcmpwz256rrik_alt_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZ256rmik_alt + %k1 = VPCMPWZ256rrik_alt undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwzrmik_vpcmpwzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwzrmik_vpcmpwzrrik_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZrmik + %k1 = VPCMPWZrrik undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpwzrmik_alt_vpcmpwzrrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpwzrmik_alt_vpcmpwzrrik_alt_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPWZrmik_alt + %k1 = VPCMPWZrrik_alt undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpconflictdz128rmk_vpconflictdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpconflictdz128rmk_vpconflictdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTDZ128rmk + %xmm0 = VPCONFLICTDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpconflictdz256rmk_vpconflictdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpconflictdz256rmk_vpconflictdz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTDZ256rmk + %ymm0 = VPCONFLICTDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpconflictdzrmk_vpconflictdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpconflictdzrmk_vpconflictdzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTDZrmk + %zmm0 = VPCONFLICTDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpconflictqz128rmk_vpconflictqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpconflictqz128rmk_vpconflictqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTQZ128rmk + %xmm0 = VPCONFLICTQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpconflictqz256rmk_vpconflictqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpconflictqz256rmk_vpconflictqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTQZ256rmk + %ymm0 = VPCONFLICTQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpconflictqzrmk_vpconflictqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpconflictqzrmk_vpconflictqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCONFLICTQZrmk + %zmm0 = VPCONFLICTQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpermbz128rmkz_vpermbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermbz128rmkz_vpermbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMBZ128rmkz + %xmm0 = VPERMBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpermbz256rmkz_vpermbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermbz256rmkz_vpermbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMBZ256rmkz + %ymm0 = VPERMBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpermbzrmkz_vpermbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermbzrmkz_vpermbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMBZrmkz + %zmm0 = VPERMBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpermi2b128rm_vpermi2b128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2b128rm_vpermi2b128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2B128rm + %xmm0 = VPERMI2B128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2b256rm_vpermi2b256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2b256rm_vpermi2b256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2B256rm + %ymm0 = VPERMI2B256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2brm_vpermi2brr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2brm_vpermi2brr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Brm + %zmm0 = VPERMI2Brr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2w128rm_vpermi2w128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2w128rm_vpermi2w128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2W128rm + %xmm0 = VPERMI2W128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2w256rm_vpermi2w256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2w256rm_vpermi2w256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2W256rm + %ymm0 = VPERMI2W256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2wrm_vpermi2wrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2wrm_vpermi2wrr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Wrm + %zmm0 = VPERMI2Wrr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2b128rm_vpermt2b128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2b128rm_vpermt2b128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2B128rm + %xmm0 = VPERMT2B128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2b256rm_vpermt2b256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2b256rm_vpermt2b256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2B256rm + %ymm0 = VPERMT2B256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2brm_vpermt2brr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2brm_vpermt2brr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Brm + %zmm0 = VPERMT2Brr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2w128rm_vpermt2w128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2w128rm_vpermt2w128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2W128rm + %xmm0 = VPERMT2W128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2w256rm_vpermt2w256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2w256rm_vpermt2w256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2W256rm + %ymm0 = VPERMT2W256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2wrm_vpermt2wrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2wrm_vpermt2wrr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Wrm + %zmm0 = VPERMT2Wrr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermwz128rmkz_vpermwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermwz128rmkz_vpermwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMWZ128rmkz + %xmm0 = VPERMWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpermwz256rmkz_vpermwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermwz256rmkz_vpermwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMWZ256rmkz + %ymm0 = VPERMWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpermwzrmkz_vpermwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermwzrmkz_vpermwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMWZrmkz + %zmm0 = VPERMWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vplzcntdz128rmk_vplzcntdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vplzcntdz128rmk_vplzcntdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTDZ128rmk + %xmm0 = VPLZCNTDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vplzcntdz256rmk_vplzcntdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vplzcntdz256rmk_vplzcntdz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTDZ256rmk + %ymm0 = VPLZCNTDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vplzcntdzrmk_vplzcntdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vplzcntdzrmk_vplzcntdzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTDZrmk + %zmm0 = VPLZCNTDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vplzcntqz128rmk_vplzcntqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vplzcntqz128rmk_vplzcntqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTQZ128rmk + %xmm0 = VPLZCNTQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vplzcntqz256rmk_vplzcntqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vplzcntqz256rmk_vplzcntqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTQZ256rmk + %ymm0 = VPLZCNTQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vplzcntqzrmk_vplzcntqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vplzcntqzrmk_vplzcntqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPLZCNTQZrmk + %zmm0 = VPLZCNTQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmadd52huqz128m_vpmadd52huqz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52huqz128m_vpmadd52huqz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52HUQZ128m + %xmm0 = VPMADD52HUQZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpmadd52huqz256m_vpmadd52huqz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52huqz256m_vpmadd52huqz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52HUQZ256m + %ymm0 = VPMADD52HUQZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpmadd52huqzm_vpmadd52huqzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52huqzm_vpmadd52huqzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52HUQZm + %zmm0 = VPMADD52HUQZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpmadd52luqz128m_vpmadd52luqz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52luqz128m_vpmadd52luqz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52LUQZ128m + %xmm0 = VPMADD52LUQZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpmadd52luqz256m_vpmadd52luqz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52luqz256m_vpmadd52luqz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52LUQZ256m + %ymm0 = VPMADD52LUQZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpmadd52luqzm_vpmadd52luqzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52luqzm_vpmadd52luqzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52LUQZm + %zmm0 = VPMADD52LUQZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpmaddubswz128rmkz_vpmaddubswz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddubswz128rmkz_vpmaddubswz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDUBSWZ128rmkz + %xmm0 = VPMADDUBSWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaddubswz256rmkz_vpmaddubswz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddubswz256rmkz_vpmaddubswz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDUBSWZ256rmkz + %ymm0 = VPMADDUBSWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaddubswzrmkz_vpmaddubswzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddubswzrmkz_vpmaddubswzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDUBSWZrmkz + %zmm0 = VPMADDUBSWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaddwdz128rmkz_vpmaddwdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddwdz128rmkz_vpmaddwdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDWDZ128rmkz + %xmm0 = VPMADDWDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaddwdz256rmkz_vpmaddwdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddwdz256rmkz_vpmaddwdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDWDZ256rmkz + %ymm0 = VPMADDWDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaddwdzrmkz_vpmaddwdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaddwdzrmkz_vpmaddwdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDWDZrmkz + %zmm0 = VPMADDWDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxsbz128rmkz_vpmaxsbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsbz128rmkz_vpmaxsbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSBZ128rmkz + %xmm0 = VPMAXSBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxsbz256rmkz_vpmaxsbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsbz256rmkz_vpmaxsbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSBZ256rmkz + %ymm0 = VPMAXSBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxsbzrmkz_vpmaxsbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsbzrmkz_vpmaxsbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSBZrmkz + %zmm0 = VPMAXSBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxswz128rmkz_vpmaxswz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxswz128rmkz_vpmaxswz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSWZ128rmkz + %xmm0 = VPMAXSWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxswz256rmkz_vpmaxswz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxswz256rmkz_vpmaxswz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSWZ256rmkz + %ymm0 = VPMAXSWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxswzrmkz_vpmaxswzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxswzrmkz_vpmaxswzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSWZrmkz + %zmm0 = VPMAXSWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxubz128rmkz_vpmaxubz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxubz128rmkz_vpmaxubz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUBZ128rmkz + %xmm0 = VPMAXUBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxubz256rmkz_vpmaxubz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxubz256rmkz_vpmaxubz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUBZ256rmkz + %ymm0 = VPMAXUBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxubzrmkz_vpmaxubzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxubzrmkz_vpmaxubzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUBZrmkz + %zmm0 = VPMAXUBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxuwz128rmkz_vpmaxuwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuwz128rmkz_vpmaxuwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUWZ128rmkz + %xmm0 = VPMAXUWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxuwz256rmkz_vpmaxuwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuwz256rmkz_vpmaxuwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUWZ256rmkz + %ymm0 = VPMAXUWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxuwzrmkz_vpmaxuwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuwzrmkz_vpmaxuwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUWZrmkz + %zmm0 = VPMAXUWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminsbz128rmkz_vpminsbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsbz128rmkz_vpminsbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSBZ128rmkz + %xmm0 = VPMINSBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminsbz256rmkz_vpminsbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminsbz256rmkz_vpminsbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSBZ256rmkz + %ymm0 = VPMINSBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpminsbzrmkz_vpminsbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsbzrmkz_vpminsbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSBZrmkz + %zmm0 = VPMINSBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminswz128rmkz_vpminswz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminswz128rmkz_vpminswz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSWZ128rmkz + %xmm0 = VPMINSWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminswz256rmkz_vpminswz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminswz256rmkz_vpminswz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSWZ256rmkz + %ymm0 = VPMINSWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpminswzrmkz_vpminswzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminswzrmkz_vpminswzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSWZrmkz + %zmm0 = VPMINSWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminubz128rmkz_vpminubz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminubz128rmkz_vpminubz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUBZ128rmkz + %xmm0 = VPMINUBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminubz256rmkz_vpminubz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminubz256rmkz_vpminubz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUBZ256rmkz + %ymm0 = VPMINUBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpminubzrmkz_vpminubzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminubzrmkz_vpminubzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUBZrmkz + %zmm0 = VPMINUBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminuwz128rmkz_vpminuwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminuwz128rmkz_vpminuwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUWZ128rmkz + %xmm0 = VPMINUWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminuwz256rmkz_vpminuwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminuwz256rmkz_vpminuwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUWZ256rmkz + %ymm0 = VPMINUWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpminuwzrmkz_vpminuwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminuwzrmkz_vpminuwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUWZrmkz + %zmm0 = VPMINUWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxbwz128rmk_vpmovsxbwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbwz128rmk_vpmovsxbwz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBWZ128rmk + %xmm0 = VPMOVSXBWZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxbwz256rmk_vpmovsxbwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbwz256rmk_vpmovsxbwz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBWZ256rmk + %ymm0 = VPMOVSXBWZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxbwzrmk_vpmovsxbwzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbwzrmk_vpmovsxbwzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBWZrmk + %zmm0 = VPMOVSXBWZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxbwz128rmk_vpmovzxbwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbwz128rmk_vpmovzxbwz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBWZ128rmk + %xmm0 = VPMOVZXBWZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxbwz256rmk_vpmovzxbwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbwz256rmk_vpmovzxbwz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBWZ256rmk + %ymm0 = VPMOVZXBWZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxbwzrmk_vpmovzxbwzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbwzrmk_vpmovzxbwzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBWZrmk + %zmm0 = VPMOVZXBWZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmulhrswz128rmkz_vpmulhrswz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhrswz128rmkz_vpmulhrswz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHRSWZ128rmkz + %xmm0 = VPMULHRSWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmulhrswz256rmkz_vpmulhrswz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhrswz256rmkz_vpmulhrswz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHRSWZ256rmkz + %ymm0 = VPMULHRSWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmulhrswzrmkz_vpmulhrswzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhrswzrmkz_vpmulhrswzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHRSWZrmkz + %zmm0 = VPMULHRSWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmulhuwz128rmkz_vpmulhuwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhuwz128rmkz_vpmulhuwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHUWZ128rmkz + %xmm0 = VPMULHUWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmulhuwz256rmkz_vpmulhuwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhuwz256rmkz_vpmulhuwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHUWZ256rmkz + %ymm0 = VPMULHUWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmulhuwzrmkz_vpmulhuwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhuwzrmkz_vpmulhuwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHUWZrmkz + %zmm0 = VPMULHUWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmulhwz128rmkz_vpmulhwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhwz128rmkz_vpmulhwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHWZ128rmkz + %xmm0 = VPMULHWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmulhwz256rmkz_vpmulhwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhwz256rmkz_vpmulhwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHWZ256rmkz + %ymm0 = VPMULHWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmulhwzrmkz_vpmulhwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulhwzrmkz_vpmulhwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHWZrmkz + %zmm0 = VPMULHWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmullqz128rmkz_vpmullqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmullqz128rmkz_vpmullqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLQZ128rmkz + %xmm0 = VPMULLQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmullqz256rmkz_vpmullqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmullqz256rmkz_vpmullqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLQZ256rmkz + %ymm0 = VPMULLQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmullqzrmkz_vpmullqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmullqzrmkz_vpmullqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLQZrmkz + %zmm0 = VPMULLQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmullwz128rmkz_vpmullwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmullwz128rmkz_vpmullwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLWZ128rmkz + %xmm0 = VPMULLWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmullwz256rmkz_vpmullwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmullwz256rmkz_vpmullwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLWZ256rmkz + %ymm0 = VPMULLWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmullwzrmkz_vpmullwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmullwzrmkz_vpmullwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLWZrmkz + %zmm0 = VPMULLWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmultishiftqbz128rmkz_vpmultishiftqbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmultishiftqbz128rmkz_vpmultishiftqbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULTISHIFTQBZ128rmkz + %xmm0 = VPMULTISHIFTQBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmultishiftqbz256rmkz_vpmultishiftqbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmultishiftqbz256rmkz_vpmultishiftqbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULTISHIFTQBZ256rmkz + %ymm0 = VPMULTISHIFTQBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmultishiftqbzrmkz_vpmultishiftqbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmultishiftqbzrmkz_vpmultishiftqbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULTISHIFTQBZrmkz + %zmm0 = VPMULTISHIFTQBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpshufbz128rmkz_vpshufbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshufbz128rmkz_vpshufbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFBZ128rmkz + %xmm0 = VPSHUFBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpshufbz256rmkz_vpshufbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpshufbz256rmkz_vpshufbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFBZ256rmkz + %ymm0 = VPSHUFBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpshufbzrmkz_vpshufbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpshufbzrmkz_vpshufbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFBZrmkz + %zmm0 = VPSHUFBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpshufhwz128mik_vpshufhwz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshufhwz128mik_vpshufhwz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFHWZ128mik + %xmm0 = VPSHUFHWZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpshufhwz256mik_vpshufhwz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpshufhwz256mik_vpshufhwz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFHWZ256mik + %ymm0 = VPSHUFHWZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpshufhwzmik_vpshufhwzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpshufhwzmik_vpshufhwzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFHWZmik + %zmm0 = VPSHUFHWZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpshuflwz128mik_vpshuflwz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshuflwz128mik_vpshuflwz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFLWZ128mik + %xmm0 = VPSHUFLWZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpshuflwz256mik_vpshuflwz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpshuflwz256mik_vpshuflwz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFLWZ256mik + %ymm0 = VPSHUFLWZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpshuflwzmik_vpshuflwzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpshuflwzmik_vpshuflwzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFLWZmik + %zmm0 = VPSHUFLWZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsllvwz128rmkz_vpsllvwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvwz128rmkz_vpsllvwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVWZ128rmkz + %xmm0 = VPSLLVWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllvwz256rmkz_vpsllvwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvwz256rmkz_vpsllvwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVWZ256rmkz + %ymm0 = VPSLLVWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllvwzrmkz_vpsllvwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvwzrmkz_vpsllvwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVWZrmkz + %zmm0 = VPSLLVWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllwz128mik_vpsllwz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllwz128mik_vpsllwz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ128mik + %xmm0 = VPSLLWZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsllwz128rmkz_vpsllwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllwz128rmkz_vpsllwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ128rmkz + %xmm0 = VPSLLWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllwz256mik_vpsllwz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsllwz256mik_vpsllwz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ256mik + %ymm0 = VPSLLWZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsllwz256rmkz_vpsllwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllwz256rmkz_vpsllwz256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ256rmkz + %ymm0 = VPSLLWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllwzmik_vpsllwzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllwzmik_vpsllwzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZmik + %zmm0 = VPSLLWZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsllwzrmkz_vpsllwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllwzrmkz_vpsllwzrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZrmkz + %zmm0 = VPSLLWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsravwz128rmkz_vpsravwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravwz128rmkz_vpsravwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVWZ128rmkz + %xmm0 = VPSRAVWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsravwz256rmkz_vpsravwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsravwz256rmkz_vpsravwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVWZ256rmkz + %ymm0 = VPSRAVWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsravwzrmkz_vpsravwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravwzrmkz_vpsravwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVWZrmkz + %zmm0 = VPSRAVWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrawz128mik_vpsrawz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrawz128mik_vpsrawz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ128mik + %xmm0 = VPSRAWZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrawz128rmkz_vpsrawz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrawz128rmkz_vpsrawz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ128rmkz + %xmm0 = VPSRAWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrawz256mik_vpsrawz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrawz256mik_vpsrawz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ256mik + %ymm0 = VPSRAWZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrawz256rmkz_vpsrawz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrawz256rmkz_vpsrawz256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ256rmkz + %ymm0 = VPSRAWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrawzmik_vpsrawzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrawzmik_vpsrawzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZmik + %zmm0 = VPSRAWZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrawzrmkz_vpsrawzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrawzrmkz_vpsrawzrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZrmkz + %zmm0 = VPSRAWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlvwz128rmkz_vpsrlvwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvwz128rmkz_vpsrlvwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVWZ128rmkz + %xmm0 = VPSRLVWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlvwz256rmkz_vpsrlvwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvwz256rmkz_vpsrlvwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVWZ256rmkz + %ymm0 = VPSRLVWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlvwzrmkz_vpsrlvwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvwzrmkz_vpsrlvwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVWZrmkz + %zmm0 = VPSRLVWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlwz128mik_vpsrlwz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz128mik_vpsrlwz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ128mik + %xmm0 = VPSRLWZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrlwz128rmkz_vpsrlwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz128rmkz_vpsrlwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ128rmkz + %xmm0 = VPSRLWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlwz256mik_vpsrlwz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz256mik_vpsrlwz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ256mik + %ymm0 = VPSRLWZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrlwz256rmkz_vpsrlwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz256rmkz_vpsrlwz256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ256rmkz + %ymm0 = VPSRLWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlwzmik_vpsrlwzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlwzmik_vpsrlwzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZmik + %zmm0 = VPSRLWZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrlwzrmkz_vpsrlwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlwzrmkz_vpsrlwzrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZrmkz + %zmm0 = VPSRLWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubbz128rmkz_vpsubbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubbz128rmkz_vpsubbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBBZ128rmkz + %xmm0 = VPSUBBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubbz256rmkz_vpsubbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubbz256rmkz_vpsubbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBBZ256rmkz + %ymm0 = VPSUBBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubbzrmkz_vpsubbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubbzrmkz_vpsubbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBBZrmkz + %zmm0 = VPSUBBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubsbz128rmkz_vpsubsbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubsbz128rmkz_vpsubsbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSBZ128rmkz + %xmm0 = VPSUBSBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubsbz256rmkz_vpsubsbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubsbz256rmkz_vpsubsbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSBZ256rmkz + %ymm0 = VPSUBSBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubsbzrmkz_vpsubsbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubsbzrmkz_vpsubsbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSBZrmkz + %zmm0 = VPSUBSBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubswz128rmkz_vpsubswz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubswz128rmkz_vpsubswz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSWZ128rmkz + %xmm0 = VPSUBSWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubswz256rmkz_vpsubswz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubswz256rmkz_vpsubswz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSWZ256rmkz + %ymm0 = VPSUBSWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubswzrmkz_vpsubswzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubswzrmkz_vpsubswzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSWZrmkz + %zmm0 = VPSUBSWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubusbz128rmkz_vpsubusbz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubusbz128rmkz_vpsubusbz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSBZ128rmkz + %xmm0 = VPSUBUSBZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubusbz256rmkz_vpsubusbz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubusbz256rmkz_vpsubusbz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSBZ256rmkz + %ymm0 = VPSUBUSBZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubusbzrmkz_vpsubusbzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubusbzrmkz_vpsubusbzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSBZrmkz + %zmm0 = VPSUBUSBZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubuswz128rmkz_vpsubuswz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubuswz128rmkz_vpsubuswz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSWZ128rmkz + %xmm0 = VPSUBUSWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubuswz256rmkz_vpsubuswz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubuswz256rmkz_vpsubuswz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSWZ256rmkz + %ymm0 = VPSUBUSWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubuswzrmkz_vpsubuswzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubuswzrmkz_vpsubuswzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSWZrmkz + %zmm0 = VPSUBUSWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubwz128rmkz_vpsubwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubwz128rmkz_vpsubwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBWZ128rmkz + %xmm0 = VPSUBWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubwz256rmkz_vpsubwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubwz256rmkz_vpsubwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBWZ256rmkz + %ymm0 = VPSUBWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubwzrmkz_vpsubwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubwzrmkz_vpsubwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBWZrmkz + %zmm0 = VPSUBWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vptestmbz128rmk_vptestmbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmbz128rmk_vptestmbz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMBZ128rmk + %k1 = VPTESTMBZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestmbz256rmk_vptestmbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestmbz256rmk_vptestmbz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMBZ256rmk + %k1 = VPTESTMBZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vptestmbzrmk_vptestmbzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmbzrmk_vptestmbzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMBZrmk + %k1 = VPTESTMBZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestmwz128rmk_vptestmwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmwz128rmk_vptestmwz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMWZ128rmk + %k1 = VPTESTMWZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestmwz256rmk_vptestmwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestmwz256rmk_vptestmwz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMWZ256rmk + %k1 = VPTESTMWZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vptestmwzrmk_vptestmwzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmwzrmk_vptestmwzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMWZrmk + %k1 = VPTESTMWZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmbz128rmk_vptestnmbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmbz128rmk_vptestnmbz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMBZ128rmk + %k1 = VPTESTNMBZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmbz256rmk_vptestnmbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmbz256rmk_vptestnmbz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMBZ256rmk + %k1 = VPTESTNMBZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmbzrmk_vptestnmbzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmbzrmk_vptestnmbzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMBZrmk + %k1 = VPTESTNMBZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmwz128rmk_vptestnmwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmwz128rmk_vptestnmwz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMWZ128rmk + %k1 = VPTESTNMWZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmwz256rmk_vptestnmwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmwz256rmk_vptestnmwz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMWZ256rmk + %k1 = VPTESTNMWZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmwzrmk_vptestnmwzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmwzrmk_vptestnmwzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMWZrmk + %k1 = VPTESTNMWZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhbwz128rmkz_vpunpckhbwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhbwz128rmkz_vpunpckhbwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHBWZ128rmkz + %xmm0 = VPUNPCKHBWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhbwz256rmkz_vpunpckhbwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhbwz256rmkz_vpunpckhbwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHBWZ256rmkz + %ymm0 = VPUNPCKHBWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhbwzrmkz_vpunpckhbwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhbwzrmkz_vpunpckhbwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHBWZrmkz + %zmm0 = VPUNPCKHBWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhwdz128rmkz_vpunpckhwdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhwdz128rmkz_vpunpckhwdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHWDZ128rmkz + %xmm0 = VPUNPCKHWDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhwdz256rmkz_vpunpckhwdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhwdz256rmkz_vpunpckhwdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHWDZ256rmkz + %ymm0 = VPUNPCKHWDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhwdzrmkz_vpunpckhwdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhwdzrmkz_vpunpckhwdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHWDZrmkz + %zmm0 = VPUNPCKHWDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpcklbwz128rmkz_vpunpcklbwz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklbwz128rmkz_vpunpcklbwz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLBWZ128rmkz + %xmm0 = VPUNPCKLBWZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpcklbwz256rmkz_vpunpcklbwz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklbwz256rmkz_vpunpcklbwz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLBWZ256rmkz + %ymm0 = VPUNPCKLBWZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpcklbwzrmkz_vpunpcklbwzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklbwzrmkz_vpunpcklbwzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLBWZrmkz + %zmm0 = VPUNPCKLBWZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpcklwdz128rmkz_vpunpcklwdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklwdz128rmkz_vpunpcklwdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLWDZ128rmkz + %xmm0 = VPUNPCKLWDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpcklwdz256rmkz_vpunpcklwdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklwdz256rmkz_vpunpcklwdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLWDZ256rmkz + %ymm0 = VPUNPCKLWDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpcklwdzrmkz_vpunpcklwdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklwdzrmkz_vpunpcklwdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLWDZrmkz + %zmm0 = VPUNPCKLWDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vrangepdz128rmikz_vrangepdz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepdz128rmikz_vrangepdz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZ128rmikz + %xmm0 = VRANGEPDZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrangepdz256rmikz_vrangepdz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vrangepdz256rmikz_vrangepdz256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZ256rmikz + %ymm0 = VRANGEPDZ256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrangepdzrmbikz_vrangepdzrribkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepdzrmbikz_vrangepdzrribkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZrmbikz + %zmm0 = VRANGEPDZrribkz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrangepdzrmikz_vrangepdzrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepdzrmikz_vrangepdzrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZrmikz + %zmm0 = VRANGEPDZrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrangepsz128rmikz_vrangepsz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepsz128rmikz_vrangepsz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZ128rmikz + %xmm0 = VRANGEPSZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrangepsz256rmikz_vrangepsz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vrangepsz256rmikz_vrangepsz256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZ256rmikz + %ymm0 = VRANGEPSZ256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrangepszrmbikz_vrangepszrribkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepszrmbikz_vrangepszrribkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZrmbikz + %zmm0 = VRANGEPSZrribkz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrangepszrmikz_vrangepszrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrangepszrmikz_vrangepszrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZrmikz + %zmm0 = VRANGEPSZrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrangesdz128rmikz_vrangesdz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrangesdz128rmikz_vrangesdz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGESDZ128rmikz + %xmm0 = VRANGESDZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrangessz128rmikz_vrangessz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrangessz128rmikz_vrangessz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGESSZ128rmikz + %xmm0 = VRANGESSZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrcp28pdmbk_vrcp28pdrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp28pdmbk_vrcp28pdrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PDmbk + %zmm0 = VRCP28PDrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrcp28pdmk_vrcp28pdrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp28pdmk_vrcp28pdrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PDmk + %zmm0 = VRCP28PDrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrcp28psmbk_vrcp28psrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp28psmbk_vrcp28psrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PSmbk + %zmm0 = VRCP28PSrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrcp28psmk_vrcp28psrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp28psmk_vrcp28psrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28PSmk + %zmm0 = VRCP28PSrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrcp28sdmkz_vrcp28sdrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp28sdmkz_vrcp28sdrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28SDmkz + %xmm0 = VRCP28SDrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vrcp28ssmkz_vrcp28ssrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp28ssmkz_vrcp28ssrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28SSmkz + %xmm0 = VRCP28SSrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vreducepdz128rmik_vreducepdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vreducepdz128rmik_vreducepdz128rrik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZ128rmik + %xmm0 = VREDUCEPDZ128rrik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vreducepdz256rmik_vreducepdz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vreducepdz256rmik_vreducepdz256rrik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZ256rmik + %ymm0 = VREDUCEPDZ256rrik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vreducepdzrmbik_vreducepdzrribk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vreducepdzrmbik_vreducepdzrribk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZrmbik + %zmm0 = VREDUCEPDZrribk undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vreducepdzrmik_vreducepdzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vreducepdzrmik_vreducepdzrrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPDZrmik + %zmm0 = VREDUCEPDZrrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vreducepsz128rmik_vreducepsz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vreducepsz128rmik_vreducepsz128rrik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZ128rmik + %xmm0 = VREDUCEPSZ128rrik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vreducepsz256rmik_vreducepsz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vreducepsz256rmik_vreducepsz256rrik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZ256rmik + %ymm0 = VREDUCEPSZ256rrik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vreducepszrmbik_vreducepszrribk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vreducepszrmbik_vreducepszrribk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZrmbik + %zmm0 = VREDUCEPSZrribk undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vreducepszrmik_vreducepszrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vreducepszrmik_vreducepszrrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCEPSZrmik + %zmm0 = VREDUCEPSZrrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vreducesdz128rmikz_vreducesdz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vreducesdz128rmikz_vreducesdz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCESDZ128rmikz + %xmm0 = VREDUCESDZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vreducessz128rmikz_vreducessz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vreducessz128rmikz_vreducessz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCESSZ128rmikz + %xmm0 = VREDUCESSZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrsqrt28pdmbk_vrsqrt28pdrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28pdmbk_vrsqrt28pdrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PDmbk + %zmm0 = VRSQRT28PDrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrsqrt28pdmk_vrsqrt28pdrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28pdmk_vrsqrt28pdrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PDmk + %zmm0 = VRSQRT28PDrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrsqrt28psmbk_vrsqrt28psrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28psmbk_vrsqrt28psrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PSmbk + %zmm0 = VRSQRT28PSrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrsqrt28psmk_vrsqrt28psrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28psmk_vrsqrt28psrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28PSmk + %zmm0 = VRSQRT28PSrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrsqrt28sdmkz_vrsqrt28sdrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28sdmkz_vrsqrt28sdrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28SDmkz + %xmm0 = VRSQRT28SDrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vrsqrt28ssmkz_vrsqrt28ssrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28ssmkz_vrsqrt28ssrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28SSmkz + %xmm0 = VRSQRT28SSrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vxorpdz128rmkz_vxorpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vxorpdz128rmkz_vxorpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPDZ128rmkz + %xmm0 = VXORPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vxorpdz256rmkz_vxorpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vxorpdz256rmkz_vxorpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPDZ256rmkz + %ymm0 = VXORPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vxorpdzrmkz_vxorpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vxorpdzrmkz_vxorpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPDZrmkz + %zmm0 = VXORPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vxorpsz128rmkz_vxorpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vxorpsz128rmkz_vxorpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPSZ128rmkz + %xmm0 = VXORPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vxorpsz256rmkz_vxorpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vxorpsz256rmkz_vxorpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPSZ256rmkz + %ymm0 = VXORPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vxorpszrmkz_vxorpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vxorpszrmkz_vxorpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPSZrmkz + %zmm0 = VXORPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vandnpdz128rmk_vandnpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vandnpdz128rmk_vandnpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPDZ128rmk + %xmm0 = VANDNPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vandnpdz256rmk_vandnpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vandnpdz256rmk_vandnpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPDZ256rmk + %ymm0 = VANDNPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vandnpdzrmk_vandnpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vandnpdzrmk_vandnpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPDZrmk + %zmm0 = VANDNPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vandnpsz128rmk_vandnpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vandnpsz128rmk_vandnpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPSZ128rmk + %xmm0 = VANDNPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vandnpsz256rmk_vandnpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vandnpsz256rmk_vandnpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPSZ256rmk + %ymm0 = VANDNPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vandnpszrmk_vandnpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vandnpszrmk_vandnpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDNPSZrmk + %zmm0 = VANDNPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vandpdz128rmk_vandpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vandpdz128rmk_vandpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPDZ128rmk + %xmm0 = VANDPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vandpdz256rmk_vandpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vandpdz256rmk_vandpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPDZ256rmk + %ymm0 = VANDPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vandpdzrmk_vandpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vandpdzrmk_vandpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPDZrmk + %zmm0 = VANDPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vandpsz128rmk_vandpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vandpsz128rmk_vandpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPSZ128rmk + %xmm0 = VANDPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vandpsz256rmk_vandpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vandpsz256rmk_vandpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPSZ256rmk + %ymm0 = VANDPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vandpszrmk_vandpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vandpszrmk_vandpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VANDPSZrmk + %zmm0 = VANDPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vdbpsadbwz128rmik_vdbpsadbwz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vdbpsadbwz128rmik_vdbpsadbwz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDBPSADBWZ128rmik + %xmm0 = VDBPSADBWZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vdbpsadbwz256rmik_vdbpsadbwz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vdbpsadbwz256rmik_vdbpsadbwz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDBPSADBWZ256rmik + %ymm0 = VDBPSADBWZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vdbpsadbwzrmik_vdbpsadbwzrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vdbpsadbwzrmik_vdbpsadbwzrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDBPSADBWZrmik + %zmm0 = VDBPSADBWZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vinsertf32x8zrmk_vinsertf32x8zrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vinsertf32x8zrmk_vinsertf32x8zrrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF32x8Zrmk + %zmm0 = VINSERTF32x8Zrrk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vinsertf64x2z256rmk_vinsertf64x2z256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vinsertf64x2z256rmk_vinsertf64x2z256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF64x2Z256rmk + %ymm0 = VINSERTF64x2Z256rrk undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vinsertf64x2zrmk_vinsertf64x2zrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vinsertf64x2zrmk_vinsertf64x2zrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF64x2Zrmk + %zmm0 = VINSERTF64x2Zrrk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vinserti32x8zrmk_vinserti32x8zrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vinserti32x8zrmk_vinserti32x8zrrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI32x8Zrmk + %zmm0 = VINSERTI32x8Zrrk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vinserti64x2z256rmk_vinserti64x2z256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vinserti64x2z256rmk_vinserti64x2z256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI64x2Z256rmk + %ymm0 = VINSERTI64x2Z256rrk undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vinserti64x2zrmk_vinserti64x2zrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vinserti64x2zrmk_vinserti64x2zrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI64x2Zrmk + %zmm0 = VINSERTI64x2Zrrk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vorpdz128rmk_vorpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vorpdz128rmk_vorpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPDZ128rmk + %xmm0 = VORPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vorpdz256rmk_vorpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vorpdz256rmk_vorpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPDZ256rmk + %ymm0 = VORPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vorpdzrmk_vorpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vorpdzrmk_vorpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPDZrmk + %zmm0 = VORPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vorpsz128rmk_vorpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vorpsz128rmk_vorpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPSZ128rmk + %xmm0 = VORPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vorpsz256rmk_vorpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vorpsz256rmk_vorpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPSZ256rmk + %ymm0 = VORPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vorpszrmk_vorpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vorpszrmk_vorpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VORPSZrmk + %zmm0 = VORPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpackssdwz128rmk_vpackssdwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpackssdwz128rmk_vpackssdwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSDWZ128rmk + %xmm0 = VPACKSSDWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpackssdwz256rmk_vpackssdwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpackssdwz256rmk_vpackssdwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSDWZ256rmk + %ymm0 = VPACKSSDWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpackssdwzrmk_vpackssdwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpackssdwzrmk_vpackssdwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSDWZrmk + %zmm0 = VPACKSSDWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpacksswbz128rmk_vpacksswbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpacksswbz128rmk_vpacksswbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSWBZ128rmk + %xmm0 = VPACKSSWBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpacksswbz256rmk_vpacksswbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpacksswbz256rmk_vpacksswbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSWBZ256rmk + %ymm0 = VPACKSSWBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpacksswbzrmk_vpacksswbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpacksswbzrmk_vpacksswbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKSSWBZrmk + %zmm0 = VPACKSSWBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpackusdwz128rmk_vpackusdwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpackusdwz128rmk_vpackusdwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSDWZ128rmk + %xmm0 = VPACKUSDWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpackusdwz256rmk_vpackusdwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpackusdwz256rmk_vpackusdwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSDWZ256rmk + %ymm0 = VPACKUSDWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpackusdwzrmk_vpackusdwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpackusdwzrmk_vpackusdwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSDWZrmk + %zmm0 = VPACKUSDWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpackuswbz128rmk_vpackuswbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpackuswbz128rmk_vpackuswbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSWBZ128rmk + %xmm0 = VPACKUSWBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpackuswbz256rmk_vpackuswbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpackuswbz256rmk_vpackuswbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSWBZ256rmk + %ymm0 = VPACKUSWBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpackuswbzrmk_vpackuswbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpackuswbzrmk_vpackuswbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPACKUSWBZrmk + %zmm0 = VPACKUSWBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddbz128rmk_vpaddbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddbz128rmk_vpaddbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDBZ128rmk + %xmm0 = VPADDBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddbz256rmk_vpaddbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpaddbz256rmk_vpaddbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDBZ256rmk + %ymm0 = VPADDBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddbzrmk_vpaddbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddbzrmk_vpaddbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDBZrmk + %zmm0 = VPADDBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddsbz128rmk_vpaddsbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddsbz128rmk_vpaddsbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSBZ128rmk + %xmm0 = VPADDSBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddsbz256rmk_vpaddsbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpaddsbz256rmk_vpaddsbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSBZ256rmk + %ymm0 = VPADDSBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddsbzrmk_vpaddsbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddsbzrmk_vpaddsbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSBZrmk + %zmm0 = VPADDSBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddswz128rmk_vpaddswz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddswz128rmk_vpaddswz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSWZ128rmk + %xmm0 = VPADDSWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddswz256rmk_vpaddswz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpaddswz256rmk_vpaddswz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSWZ256rmk + %ymm0 = VPADDSWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddswzrmk_vpaddswzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddswzrmk_vpaddswzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDSWZrmk + %zmm0 = VPADDSWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddusbz128rmk_vpaddusbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddusbz128rmk_vpaddusbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSBZ128rmk + %xmm0 = VPADDUSBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddusbz256rmk_vpaddusbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpaddusbz256rmk_vpaddusbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSBZ256rmk + %ymm0 = VPADDUSBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddusbzrmk_vpaddusbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddusbzrmk_vpaddusbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSBZrmk + %zmm0 = VPADDUSBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpadduswz128rmk_vpadduswz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpadduswz128rmk_vpadduswz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSWZ128rmk + %xmm0 = VPADDUSWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpadduswz256rmk_vpadduswz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpadduswz256rmk_vpadduswz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSWZ256rmk + %ymm0 = VPADDUSWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpadduswzrmk_vpadduswzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpadduswzrmk_vpadduswzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDUSWZrmk + %zmm0 = VPADDUSWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddwz128rmk_vpaddwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddwz128rmk_vpaddwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDWZ128rmk + %xmm0 = VPADDWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddwz256rmk_vpaddwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpaddwz256rmk_vpaddwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDWZ256rmk + %ymm0 = VPADDWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddwzrmk_vpaddwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddwzrmk_vpaddwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDWZrmk + %zmm0 = VPADDWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpalignrz128rmik_vpalignrz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpalignrz128rmik_vpalignrz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPALIGNRZ128rmik + %xmm0 = VPALIGNRZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpalignrz256rmik_vpalignrz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpalignrz256rmik_vpalignrz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPALIGNRZ256rmik + %ymm0 = VPALIGNRZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpalignrzrmik_vpalignrzrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpalignrzrmik_vpalignrzrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPALIGNRZrmik + %zmm0 = VPALIGNRZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpavgbz128rmk_vpavgbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpavgbz128rmk_vpavgbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGBZ128rmk + %xmm0 = VPAVGBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpavgbz256rmk_vpavgbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpavgbz256rmk_vpavgbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGBZ256rmk + %ymm0 = VPAVGBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpavgbzrmk_vpavgbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpavgbzrmk_vpavgbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGBZrmk + %zmm0 = VPAVGBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpavgwz128rmk_vpavgwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpavgwz128rmk_vpavgwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGWZ128rmk + %xmm0 = VPAVGWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpavgwz256rmk_vpavgwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpavgwz256rmk_vpavgwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGWZ256rmk + %ymm0 = VPAVGWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpavgwzrmk_vpavgwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpavgwzrmk_vpavgwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPAVGWZrmk + %zmm0 = VPAVGWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermbz128rmk_vpermbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermbz128rmk_vpermbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMBZ128rmk + %xmm0 = VPERMBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermbz256rmk_vpermbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermbz256rmk_vpermbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMBZ256rmk + %ymm0 = VPERMBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermbzrmk_vpermbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermbzrmk_vpermbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMBZrmk + %zmm0 = VPERMBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2b128rmk_vpermi2b128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2b128rmk_vpermi2b128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2B128rmk + %xmm0 = VPERMI2B128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2b128rmkz_vpermi2b128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2b128rmkz_vpermi2b128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2B128rmkz + %xmm0 = VPERMI2B128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2b256rmk_vpermi2b256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2b256rmk_vpermi2b256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2B256rmk + %ymm0 = VPERMI2B256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2b256rmkz_vpermi2b256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2b256rmkz_vpermi2b256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2B256rmkz + %ymm0 = VPERMI2B256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2brmk_vpermi2brrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2brmk_vpermi2brrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Brmk + %zmm0 = VPERMI2Brrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2brmkz_vpermi2brrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2brmkz_vpermi2brrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Brmkz + %zmm0 = VPERMI2Brrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2w128rmk_vpermi2w128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2w128rmk_vpermi2w128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2W128rmk + %xmm0 = VPERMI2W128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2w128rmkz_vpermi2w128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2w128rmkz_vpermi2w128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2W128rmkz + %xmm0 = VPERMI2W128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2w256rmk_vpermi2w256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2w256rmk_vpermi2w256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2W256rmk + %ymm0 = VPERMI2W256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2w256rmkz_vpermi2w256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2w256rmkz_vpermi2w256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2W256rmkz + %ymm0 = VPERMI2W256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2wrmk_vpermi2wrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2wrmk_vpermi2wrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Wrmk + %zmm0 = VPERMI2Wrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2wrmkz_vpermi2wrrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2wrmkz_vpermi2wrrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Wrmkz + %zmm0 = VPERMI2Wrrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2b128rmk_vpermt2b128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2b128rmk_vpermt2b128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2B128rmk + %xmm0 = VPERMT2B128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2b128rmkz_vpermt2b128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2b128rmkz_vpermt2b128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2B128rmkz + %xmm0 = VPERMT2B128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2b256rmk_vpermt2b256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2b256rmk_vpermt2b256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2B256rmk + %ymm0 = VPERMT2B256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2b256rmkz_vpermt2b256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2b256rmkz_vpermt2b256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2B256rmkz + %ymm0 = VPERMT2B256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2brmk_vpermt2brrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2brmk_vpermt2brrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Brmk + %zmm0 = VPERMT2Brrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2brmkz_vpermt2brrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2brmkz_vpermt2brrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Brmkz + %zmm0 = VPERMT2Brrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2w128rmk_vpermt2w128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2w128rmk_vpermt2w128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2W128rmk + %xmm0 = VPERMT2W128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2w128rmkz_vpermt2w128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2w128rmkz_vpermt2w128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2W128rmkz + %xmm0 = VPERMT2W128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2w256rmk_vpermt2w256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2w256rmk_vpermt2w256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2W256rmk + %ymm0 = VPERMT2W256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2w256rmkz_vpermt2w256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2w256rmkz_vpermt2w256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2W256rmkz + %ymm0 = VPERMT2W256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2wrmk_vpermt2wrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2wrmk_vpermt2wrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Wrmk + %zmm0 = VPERMT2Wrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2wrmkz_vpermt2wrrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2wrmkz_vpermt2wrrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Wrmkz + %zmm0 = VPERMT2Wrrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermwz128rmk_vpermwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermwz128rmk_vpermwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMWZ128rmk + %xmm0 = VPERMWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermwz256rmk_vpermwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermwz256rmk_vpermwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMWZ256rmk + %ymm0 = VPERMWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermwzrmk_vpermwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermwzrmk_vpermwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMWZrmk + %zmm0 = VPERMWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52huqz128mk_vpmadd52huqz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52huqz128mk_vpmadd52huqz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52HUQZ128mk + %xmm0 = VPMADD52HUQZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52huqz128mkz_vpmadd52huqz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52huqz128mkz_vpmadd52huqz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52HUQZ128mkz + %xmm0 = VPMADD52HUQZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52huqz256mk_vpmadd52huqz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52huqz256mk_vpmadd52huqz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52HUQZ256mk + %ymm0 = VPMADD52HUQZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52huqz256mkz_vpmadd52huqz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52huqz256mkz_vpmadd52huqz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52HUQZ256mkz + %ymm0 = VPMADD52HUQZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52huqzmk_vpmadd52huqzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52huqzmk_vpmadd52huqzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52HUQZmk + %zmm0 = VPMADD52HUQZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52huqzmkz_vpmadd52huqzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52huqzmkz_vpmadd52huqzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52HUQZmkz + %zmm0 = VPMADD52HUQZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52luqz128mk_vpmadd52luqz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52luqz128mk_vpmadd52luqz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52LUQZ128mk + %xmm0 = VPMADD52LUQZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52luqz128mkz_vpmadd52luqz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52luqz128mkz_vpmadd52luqz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52LUQZ128mkz + %xmm0 = VPMADD52LUQZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52luqz256mk_vpmadd52luqz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52luqz256mk_vpmadd52luqz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52LUQZ256mk + %ymm0 = VPMADD52LUQZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52luqz256mkz_vpmadd52luqz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52luqz256mkz_vpmadd52luqz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52LUQZ256mkz + %ymm0 = VPMADD52LUQZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52luqzmk_vpmadd52luqzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52luqzmk_vpmadd52luqzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52LUQZmk + %zmm0 = VPMADD52LUQZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmadd52luqzmkz_vpmadd52luqzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmadd52luqzmkz_vpmadd52luqzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADD52LUQZmkz + %zmm0 = VPMADD52LUQZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaddubswz128rmk_vpmaddubswz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaddubswz128rmk_vpmaddubswz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDUBSWZ128rmk + %xmm0 = VPMADDUBSWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaddubswz256rmk_vpmaddubswz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmaddubswz256rmk_vpmaddubswz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDUBSWZ256rmk + %ymm0 = VPMADDUBSWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaddubswzrmk_vpmaddubswzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaddubswzrmk_vpmaddubswzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDUBSWZrmk + %zmm0 = VPMADDUBSWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaddwdz128rmk_vpmaddwdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaddwdz128rmk_vpmaddwdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDWDZ128rmk + %xmm0 = VPMADDWDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaddwdz256rmk_vpmaddwdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmaddwdz256rmk_vpmaddwdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDWDZ256rmk + %ymm0 = VPMADDWDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaddwdzrmk_vpmaddwdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaddwdzrmk_vpmaddwdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADDWDZrmk + %zmm0 = VPMADDWDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxsbz128rmk_vpmaxsbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxsbz128rmk_vpmaxsbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSBZ128rmk + %xmm0 = VPMAXSBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxsbz256rmk_vpmaxsbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxsbz256rmk_vpmaxsbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSBZ256rmk + %ymm0 = VPMAXSBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxsbzrmk_vpmaxsbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxsbzrmk_vpmaxsbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSBZrmk + %zmm0 = VPMAXSBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxswz128rmk_vpmaxswz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxswz128rmk_vpmaxswz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSWZ128rmk + %xmm0 = VPMAXSWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxswz256rmk_vpmaxswz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxswz256rmk_vpmaxswz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSWZ256rmk + %ymm0 = VPMAXSWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxswzrmk_vpmaxswzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxswzrmk_vpmaxswzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSWZrmk + %zmm0 = VPMAXSWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxubz128rmk_vpmaxubz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxubz128rmk_vpmaxubz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUBZ128rmk + %xmm0 = VPMAXUBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxubz256rmk_vpmaxubz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxubz256rmk_vpmaxubz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUBZ256rmk + %ymm0 = VPMAXUBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxubzrmk_vpmaxubzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxubzrmk_vpmaxubzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUBZrmk + %zmm0 = VPMAXUBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxuwz128rmk_vpmaxuwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxuwz128rmk_vpmaxuwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUWZ128rmk + %xmm0 = VPMAXUWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxuwz256rmk_vpmaxuwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxuwz256rmk_vpmaxuwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUWZ256rmk + %ymm0 = VPMAXUWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxuwzrmk_vpmaxuwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxuwzrmk_vpmaxuwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUWZrmk + %zmm0 = VPMAXUWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminsbz128rmk_vpminsbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpminsbz128rmk_vpminsbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSBZ128rmk + %xmm0 = VPMINSBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminsbz256rmk_vpminsbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpminsbz256rmk_vpminsbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSBZ256rmk + %ymm0 = VPMINSBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpminsbzrmk_vpminsbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpminsbzrmk_vpminsbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSBZrmk + %zmm0 = VPMINSBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminswz128rmk_vpminswz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpminswz128rmk_vpminswz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSWZ128rmk + %xmm0 = VPMINSWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminswz256rmk_vpminswz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpminswz256rmk_vpminswz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSWZ256rmk + %ymm0 = VPMINSWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpminswzrmk_vpminswzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpminswzrmk_vpminswzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSWZrmk + %zmm0 = VPMINSWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminubz128rmk_vpminubz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpminubz128rmk_vpminubz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUBZ128rmk + %xmm0 = VPMINUBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminubz256rmk_vpminubz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpminubz256rmk_vpminubz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUBZ256rmk + %ymm0 = VPMINUBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpminubzrmk_vpminubzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpminubzrmk_vpminubzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUBZrmk + %zmm0 = VPMINUBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminuwz128rmk_vpminuwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpminuwz128rmk_vpminuwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUWZ128rmk + %xmm0 = VPMINUWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminuwz256rmk_vpminuwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpminuwz256rmk_vpminuwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUWZ256rmk + %ymm0 = VPMINUWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpminuwzrmk_vpminuwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpminuwzrmk_vpminuwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUWZrmk + %zmm0 = VPMINUWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulhrswz128rmk_vpmulhrswz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmulhrswz128rmk_vpmulhrswz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHRSWZ128rmk + %xmm0 = VPMULHRSWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulhrswz256rmk_vpmulhrswz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmulhrswz256rmk_vpmulhrswz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHRSWZ256rmk + %ymm0 = VPMULHRSWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulhrswzrmk_vpmulhrswzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmulhrswzrmk_vpmulhrswzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHRSWZrmk + %zmm0 = VPMULHRSWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulhuwz128rmk_vpmulhuwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmulhuwz128rmk_vpmulhuwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHUWZ128rmk + %xmm0 = VPMULHUWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulhuwz256rmk_vpmulhuwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmulhuwz256rmk_vpmulhuwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHUWZ256rmk + %ymm0 = VPMULHUWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulhuwzrmk_vpmulhuwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmulhuwzrmk_vpmulhuwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHUWZrmk + %zmm0 = VPMULHUWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulhwz128rmk_vpmulhwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmulhwz128rmk_vpmulhwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHWZ128rmk + %xmm0 = VPMULHWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulhwz256rmk_vpmulhwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmulhwz256rmk_vpmulhwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHWZ256rmk + %ymm0 = VPMULHWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulhwzrmk_vpmulhwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmulhwzrmk_vpmulhwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULHWZrmk + %zmm0 = VPMULHWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmullqz128rmk_vpmullqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmullqz128rmk_vpmullqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLQZ128rmk + %xmm0 = VPMULLQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmullqz256rmk_vpmullqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmullqz256rmk_vpmullqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLQZ256rmk + %ymm0 = VPMULLQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmullqzrmk_vpmullqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmullqzrmk_vpmullqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLQZrmk + %zmm0 = VPMULLQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmullwz128rmk_vpmullwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmullwz128rmk_vpmullwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLWZ128rmk + %xmm0 = VPMULLWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmullwz256rmk_vpmullwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmullwz256rmk_vpmullwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLWZ256rmk + %ymm0 = VPMULLWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmullwzrmk_vpmullwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmullwzrmk_vpmullwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLWZrmk + %zmm0 = VPMULLWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmultishiftqbz128rmk_vpmultishiftqbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmultishiftqbz128rmk_vpmultishiftqbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULTISHIFTQBZ128rmk + %xmm0 = VPMULTISHIFTQBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmultishiftqbz256rmk_vpmultishiftqbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmultishiftqbz256rmk_vpmultishiftqbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULTISHIFTQBZ256rmk + %ymm0 = VPMULTISHIFTQBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmultishiftqbzrmk_vpmultishiftqbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmultishiftqbzrmk_vpmultishiftqbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULTISHIFTQBZrmk + %zmm0 = VPMULTISHIFTQBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpshufbz128rmk_vpshufbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpshufbz128rmk_vpshufbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFBZ128rmk + %xmm0 = VPSHUFBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpshufbz256rmk_vpshufbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpshufbz256rmk_vpshufbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFBZ256rmk + %ymm0 = VPSHUFBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpshufbzrmk_vpshufbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpshufbzrmk_vpshufbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFBZrmk + %zmm0 = VPSHUFBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllvwz128rmk_vpsllvwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllvwz128rmk_vpsllvwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVWZ128rmk + %xmm0 = VPSLLVWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllvwz256rmk_vpsllvwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsllvwz256rmk_vpsllvwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVWZ256rmk + %ymm0 = VPSLLVWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllvwzrmk_vpsllvwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllvwzrmk_vpsllvwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVWZrmk + %zmm0 = VPSLLVWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllwz128rmk_vpsllwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllwz128rmk_vpsllwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ128rmk + %xmm0 = VPSLLWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllwz256rmk_vpsllwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllwz256rmk_vpsllwz256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZ256rmk + %ymm0 = VPSLLWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllwzrmk_vpsllwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllwzrmk_vpsllwzrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLWZrmk + %zmm0 = VPSLLWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsravwz128rmk_vpsravwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsravwz128rmk_vpsravwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVWZ128rmk + %xmm0 = VPSRAVWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsravwz256rmk_vpsravwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsravwz256rmk_vpsravwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVWZ256rmk + %ymm0 = VPSRAVWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsravwzrmk_vpsravwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsravwzrmk_vpsravwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVWZrmk + %zmm0 = VPSRAVWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrawz128rmk_vpsrawz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrawz128rmk_vpsrawz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ128rmk + %xmm0 = VPSRAWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrawz256rmk_vpsrawz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrawz256rmk_vpsrawz256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZ256rmk + %ymm0 = VPSRAWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrawzrmk_vpsrawzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrawzrmk_vpsrawzrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAWZrmk + %zmm0 = VPSRAWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlvwz128rmk_vpsrlvwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlvwz128rmk_vpsrlvwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVWZ128rmk + %xmm0 = VPSRLVWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlvwz256rmk_vpsrlvwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlvwz256rmk_vpsrlvwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVWZ256rmk + %ymm0 = VPSRLVWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlvwzrmk_vpsrlvwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlvwzrmk_vpsrlvwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVWZrmk + %zmm0 = VPSRLVWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlwz128rmk_vpsrlwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz128rmk_vpsrlwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ128rmk + %xmm0 = VPSRLWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlwz256rmk_vpsrlwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlwz256rmk_vpsrlwz256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZ256rmk + %ymm0 = VPSRLWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlwzrmk_vpsrlwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlwzrmk_vpsrlwzrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLWZrmk + %zmm0 = VPSRLWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubbz128rmk_vpsubbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubbz128rmk_vpsubbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBBZ128rmk + %xmm0 = VPSUBBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubbz256rmk_vpsubbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsubbz256rmk_vpsubbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBBZ256rmk + %ymm0 = VPSUBBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubbzrmk_vpsubbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubbzrmk_vpsubbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBBZrmk + %zmm0 = VPSUBBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubsbz128rmk_vpsubsbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubsbz128rmk_vpsubsbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSBZ128rmk + %xmm0 = VPSUBSBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubsbz256rmk_vpsubsbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsubsbz256rmk_vpsubsbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSBZ256rmk + %ymm0 = VPSUBSBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubsbzrmk_vpsubsbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubsbzrmk_vpsubsbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSBZrmk + %zmm0 = VPSUBSBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubswz128rmk_vpsubswz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubswz128rmk_vpsubswz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSWZ128rmk + %xmm0 = VPSUBSWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubswz256rmk_vpsubswz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsubswz256rmk_vpsubswz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSWZ256rmk + %ymm0 = VPSUBSWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubswzrmk_vpsubswzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubswzrmk_vpsubswzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBSWZrmk + %zmm0 = VPSUBSWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubusbz128rmk_vpsubusbz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubusbz128rmk_vpsubusbz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSBZ128rmk + %xmm0 = VPSUBUSBZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubusbz256rmk_vpsubusbz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsubusbz256rmk_vpsubusbz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSBZ256rmk + %ymm0 = VPSUBUSBZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubusbzrmk_vpsubusbzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubusbzrmk_vpsubusbzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSBZrmk + %zmm0 = VPSUBUSBZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubuswz128rmk_vpsubuswz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubuswz128rmk_vpsubuswz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSWZ128rmk + %xmm0 = VPSUBUSWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubuswz256rmk_vpsubuswz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsubuswz256rmk_vpsubuswz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSWZ256rmk + %ymm0 = VPSUBUSWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubuswzrmk_vpsubuswzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubuswzrmk_vpsubuswzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBUSWZrmk + %zmm0 = VPSUBUSWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubwz128rmk_vpsubwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubwz128rmk_vpsubwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBWZ128rmk + %xmm0 = VPSUBWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubwz256rmk_vpsubwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsubwz256rmk_vpsubwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBWZ256rmk + %ymm0 = VPSUBWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubwzrmk_vpsubwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubwzrmk_vpsubwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBWZrmk + %zmm0 = VPSUBWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckhbwz128rmk_vpunpckhbwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhbwz128rmk_vpunpckhbwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHBWZ128rmk + %xmm0 = VPUNPCKHBWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckhbwz256rmk_vpunpckhbwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhbwz256rmk_vpunpckhbwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHBWZ256rmk + %ymm0 = VPUNPCKHBWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckhbwzrmk_vpunpckhbwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhbwzrmk_vpunpckhbwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHBWZrmk + %zmm0 = VPUNPCKHBWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckhwdz128rmk_vpunpckhwdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhwdz128rmk_vpunpckhwdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHWDZ128rmk + %xmm0 = VPUNPCKHWDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckhwdz256rmk_vpunpckhwdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhwdz256rmk_vpunpckhwdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHWDZ256rmk + %ymm0 = VPUNPCKHWDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckhwdzrmk_vpunpckhwdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhwdzrmk_vpunpckhwdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHWDZrmk + %zmm0 = VPUNPCKHWDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpcklbwz128rmk_vpunpcklbwz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpcklbwz128rmk_vpunpcklbwz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLBWZ128rmk + %xmm0 = VPUNPCKLBWZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpcklbwz256rmk_vpunpcklbwz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpunpcklbwz256rmk_vpunpcklbwz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLBWZ256rmk + %ymm0 = VPUNPCKLBWZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpcklbwzrmk_vpunpcklbwzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpcklbwzrmk_vpunpcklbwzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLBWZrmk + %zmm0 = VPUNPCKLBWZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpcklwdz128rmk_vpunpcklwdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpcklwdz128rmk_vpunpcklwdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLWDZ128rmk + %xmm0 = VPUNPCKLWDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpcklwdz256rmk_vpunpcklwdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpunpcklwdz256rmk_vpunpcklwdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLWDZ256rmk + %ymm0 = VPUNPCKLWDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpcklwdzrmk_vpunpcklwdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpcklwdzrmk_vpunpcklwdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLWDZrmk + %zmm0 = VPUNPCKLWDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vrangepdz128rmik_vrangepdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrangepdz128rmik_vrangepdz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZ128rmik + %xmm0 = VRANGEPDZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrangepdz256rmik_vrangepdz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vrangepdz256rmik_vrangepdz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZ256rmik + %ymm0 = VRANGEPDZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrangepdzrmbik_vrangepdzrribk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vrangepdzrmbik_vrangepdzrribk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZrmbik + %zmm0 = VRANGEPDZrribk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrangepdzrmik_vrangepdzrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vrangepdzrmik_vrangepdzrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPDZrmik + %zmm0 = VRANGEPDZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrangepsz128rmik_vrangepsz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrangepsz128rmik_vrangepsz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZ128rmik + %xmm0 = VRANGEPSZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrangepsz256rmik_vrangepsz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vrangepsz256rmik_vrangepsz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZ256rmik + %ymm0 = VRANGEPSZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrangepszrmbik_vrangepszrribk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vrangepszrmbik_vrangepszrribk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZrmbik + %zmm0 = VRANGEPSZrribk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrangepszrmik_vrangepszrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vrangepszrmik_vrangepszrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGEPSZrmik + %zmm0 = VRANGEPSZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrangesdz128rmik_vrangesdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrangesdz128rmik_vrangesdz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGESDZ128rmik + %xmm0 = VRANGESDZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrangessz128rmik_vrangessz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrangessz128rmik_vrangessz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRANGESSZ128rmik + %xmm0 = VRANGESSZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrcp28sdmk_vrcp28sdrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrcp28sdmk_vrcp28sdrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28SDmk + %xmm0 = VRCP28SDrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vrcp28ssmk_vrcp28ssrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrcp28ssmk_vrcp28ssrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP28SSmk + %xmm0 = VRCP28SSrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vreducesdz128rmik_vreducesdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vreducesdz128rmik_vreducesdz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCESDZ128rmik + %xmm0 = VREDUCESDZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vreducessz128rmik_vreducessz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vreducessz128rmik_vreducessz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VREDUCESSZ128rmik + %xmm0 = VREDUCESSZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrsqrt28sdmk_vrsqrt28sdrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28sdmk_vrsqrt28sdrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28SDmk + %xmm0 = VRSQRT28SDrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vrsqrt28ssmk_vrsqrt28ssrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrsqrt28ssmk_vrsqrt28ssrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT28SSmk + %xmm0 = VRSQRT28SSrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vxorpdz128rmk_vxorpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vxorpdz128rmk_vxorpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPDZ128rmk + %xmm0 = VXORPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vxorpdz256rmk_vxorpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vxorpdz256rmk_vxorpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPDZ256rmk + %ymm0 = VXORPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vxorpdzrmk_vxorpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vxorpdzrmk_vxorpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPDZrmk + %zmm0 = VXORPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vxorpsz128rmk_vxorpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vxorpsz128rmk_vxorpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPSZ128rmk + %xmm0 = VXORPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vxorpsz256rmk_vxorpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vxorpsz256rmk_vxorpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPSZ256rmk + %ymm0 = VXORPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vxorpszrmk_vxorpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vxorpszrmk_vxorpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VXORPSZrmk + %zmm0 = VXORPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... Index: test/CodeGen/X86/memoryFolding-avx512f.mir =================================================================== --- test/CodeGen/X86/memoryFolding-avx512f.mir +++ test/CodeGen/X86/memoryFolding-avx512f.mir @@ -0,0 +1,19290 @@ +# RUN: llc -run-pass greedy -stack-alignment=64 -o - %s | FileCheck %s +# Stack alignment set to 64 to enable folding of aligned mov instructions. +--- | + attributes #0 = { "target-features" = "+avx512f" } + define void @stack_fold_vcompresspdzmr_vcompresspdzrr_test() #0 { ret void } + define void @stack_fold_vcompresspszmr_vcompresspszrr_test() #0 { ret void } + define void @stack_fold_vcvtps2phzmr_vcvtps2phzrr_test() #0 { ret void } + define void @stack_fold_vextractf32x4zmr_vextractf32x4zrr_test() #0 { ret void } + define void @stack_fold_vextractf64x4zmr_vextractf64x4zrr_test() #0 { ret void } + define void @stack_fold_vextracti32x4zmr_vextracti32x4zrr_test() #0 { ret void } + define void @stack_fold_vextracti64x4zmr_vextracti64x4zrr_test() #0 { ret void } + define void @stack_fold_vextractpszmr_vextractpszrr_test() #0 { ret void } + define void @stack_fold_vmovapdzmr_vmovapdzrr_test() #0 { ret void } + define void @stack_fold_vmovapszmr_vmovapszrr_test() #0 { ret void } + define void @stack_fold_vmovdqa32zmr_vmovdqa32zrr_test() #0 { ret void } + define void @stack_fold_vmovdqa64zmr_vmovdqa64zrr_test() #0 { ret void } + define void @stack_fold_vmovdqu32zmr_vmovdqu32zrr_test() #0 { ret void } + define void @stack_fold_vmovdqu64zmr_vmovdqu64zrr_test() #0 { ret void } + define void @stack_fold_vmovpdi2dizmr_vmovpdi2dizrr_test() #0 { ret void } + define void @stack_fold_vmovpqi2qizmr_vmovpqi2qizrr_test() #0 { ret void } + define void @stack_fold_vmovpqito64zmr_vmovpqito64zrr_test() #0 { ret void } + define void @stack_fold_vmovsdto64zmr_vmovsdto64zrr_test() #0 { ret void } + define void @stack_fold_vmovss2dizmr_vmovss2dizrr_test() #0 { ret void } + define void @stack_fold_vmovupdzmr_vmovupdzrr_test() #0 { ret void } + define void @stack_fold_vmovupszmr_vmovupszrr_test() #0 { ret void } + define void @stack_fold_vpcompressdzmr_vpcompressdzrr_test() #0 { ret void } + define void @stack_fold_vpcompressqzmr_vpcompressqzrr_test() #0 { ret void } + define void @stack_fold_vpmovdbzmr_vpmovdbzrr_test() #0 { ret void } + define void @stack_fold_vpmovdwzmr_vpmovdwzrr_test() #0 { ret void } + define void @stack_fold_vpmovqbzmr_vpmovqbzrr_test() #0 { ret void } + define void @stack_fold_vpmovqdzmr_vpmovqdzrr_test() #0 { ret void } + define void @stack_fold_vpmovqwzmr_vpmovqwzrr_test() #0 { ret void } + define void @stack_fold_vpmovsdbzmr_vpmovsdbzrr_test() #0 { ret void } + define void @stack_fold_vpmovsdwzmr_vpmovsdwzrr_test() #0 { ret void } + define void @stack_fold_vpmovsqbzmr_vpmovsqbzrr_test() #0 { ret void } + define void @stack_fold_vpmovsqdzmr_vpmovsqdzrr_test() #0 { ret void } + define void @stack_fold_vpmovsqwzmr_vpmovsqwzrr_test() #0 { ret void } + define void @stack_fold_vpmovusdbzmr_vpmovusdbzrr_test() #0 { ret void } + define void @stack_fold_vpmovusdwzmr_vpmovusdwzrr_test() #0 { ret void } + define void @stack_fold_vpmovusqbzmr_vpmovusqbzrr_test() #0 { ret void } + define void @stack_fold_vpmovusqdzmr_vpmovusqdzrr_test() #0 { ret void } + define void @stack_fold_vpmovusqwzmr_vpmovusqwzrr_test() #0 { ret void } + define void @stack_fold_int_vcomisdzrm_int_vcomisdzrr_test() #0 { ret void } + define void @stack_fold_int_vcomisszrm_int_vcomisszrr_test() #0 { ret void } + define void @stack_fold_int_vucomisdzrm_int_vucomisdzrr_test() #0 { ret void } + define void @stack_fold_int_vucomisszrm_int_vucomisszrr_test() #0 { ret void } + define void @stack_fold_kmovwkm_kmovwkk_test() #0 { ret void } + define void @stack_fold_vbroadcastsdzm_vbroadcastsdzr_test() #0 { ret void } + define void @stack_fold_vbroadcastsszm_vbroadcastsszr_test() #0 { ret void } + define void @stack_fold_vcomisdzrm_vcomisdzrr_test() #0 { ret void } + define void @stack_fold_vcomisszrm_vcomisszrr_test() #0 { ret void } + define void @stack_fold_vcvtdq2pdzrm_vcvtdq2pdzrr_test() #0 { ret void } + define void @stack_fold_vcvtdq2pszrm_vcvtdq2pszrr_test() #0 { ret void } + define void @stack_fold_vcvtpd2dqzrm_vcvtpd2dqzrr_test() #0 { ret void } + define void @stack_fold_vcvtpd2pszrm_vcvtpd2pszrr_test() #0 { ret void } + define void @stack_fold_vcvtpd2udqzrm_vcvtpd2udqzrr_test() #0 { ret void } + define void @stack_fold_vcvtph2pszrm_vcvtph2pszrr_test() #0 { ret void } + define void @stack_fold_vcvtps2dqzrm_vcvtps2dqzrr_test() #0 { ret void } + define void @stack_fold_vcvtps2pdzrm_vcvtps2pdzrr_test() #0 { ret void } + define void @stack_fold_vcvtps2pdzrmb_vcvtps2pdzrrb_test() #0 { ret void } + define void @stack_fold_vcvtps2udqzrm_vcvtps2udqzrr_test() #0 { ret void } + define void @stack_fold_vcvtsd2si64zrm_vcvtsd2si64zrr_test() #0 { ret void } + define void @stack_fold_vcvtsd2sizrm_vcvtsd2sizrr_test() #0 { ret void } + define void @stack_fold_vcvtsd2usi64zrm_vcvtsd2usi64zrr_test() #0 { ret void } + define void @stack_fold_vcvtsd2usizrm_vcvtsd2usizrr_test() #0 { ret void } + define void @stack_fold_vcvtss2si64zrm_vcvtss2si64zrr_test() #0 { ret void } + define void @stack_fold_vcvtss2sizrm_vcvtss2sizrr_test() #0 { ret void } + define void @stack_fold_vcvtss2usi64zrm_vcvtss2usi64zrr_test() #0 { ret void } + define void @stack_fold_vcvtss2usizrm_vcvtss2usizrr_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqzrm_vcvttpd2dqzrr_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqzrmb_vcvttpd2dqzrrb_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqzrm_vcvttpd2udqzrr_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqzrmb_vcvttpd2udqzrrb_test() #0 { ret void } + define void @stack_fold_vcvttps2dqzrm_vcvttps2dqzrr_test() #0 { ret void } + define void @stack_fold_vcvttps2dqzrmb_vcvttps2dqzrrb_test() #0 { ret void } + define void @stack_fold_vcvttps2udqzrm_vcvttps2udqzrr_test() #0 { ret void } + define void @stack_fold_vcvttps2udqzrmb_vcvttps2udqzrrb_test() #0 { ret void } + define void @stack_fold_vcvttsd2si64zrm_vcvttsd2si64zrr_test() #0 { ret void } + define void @stack_fold_vcvttsd2si64zrm_int_vcvttsd2si64zrr_int_test() #0 { ret void } + define void @stack_fold_vcvttsd2sizrm_vcvttsd2sizrr_test() #0 { ret void } + define void @stack_fold_vcvttsd2sizrm_int_vcvttsd2sizrr_int_test() #0 { ret void } + define void @stack_fold_vcvttsd2usi64zrm_vcvttsd2usi64zrr_test() #0 { ret void } + define void @stack_fold_vcvttsd2usi64zrm_int_vcvttsd2usi64zrr_int_test() #0 { ret void } + define void @stack_fold_vcvttsd2usizrm_vcvttsd2usizrr_test() #0 { ret void } + define void @stack_fold_vcvttsd2usizrm_int_vcvttsd2usizrr_int_test() #0 { ret void } + define void @stack_fold_vcvttss2si64zrm_vcvttss2si64zrr_test() #0 { ret void } + define void @stack_fold_vcvttss2si64zrm_int_vcvttss2si64zrr_int_test() #0 { ret void } + define void @stack_fold_vcvttss2sizrm_vcvttss2sizrr_test() #0 { ret void } + define void @stack_fold_vcvttss2sizrm_int_vcvttss2sizrr_int_test() #0 { ret void } + define void @stack_fold_vcvttss2usi64zrm_vcvttss2usi64zrr_test() #0 { ret void } + define void @stack_fold_vcvttss2usi64zrm_int_vcvttss2usi64zrr_int_test() #0 { ret void } + define void @stack_fold_vcvttss2usizrm_vcvttss2usizrr_test() #0 { ret void } + define void @stack_fold_vcvttss2usizrm_int_vcvttss2usizrr_int_test() #0 { ret void } + define void @stack_fold_vcvtudq2pdzrm_vcvtudq2pdzrr_test() #0 { ret void } + define void @stack_fold_vcvtudq2pszrm_vcvtudq2pszrr_test() #0 { ret void } + define void @stack_fold_vexpandpdzrm_vexpandpdzrr_test() #0 { ret void } + define void @stack_fold_vexpandpszrm_vexpandpszrr_test() #0 { ret void } + define void @stack_fold_vgetexppdm_vgetexppdr_test() #0 { ret void } + define void @stack_fold_vgetexppdmb_vgetexppdrb_test() #0 { ret void } + define void @stack_fold_vgetexppsm_vgetexppsr_test() #0 { ret void } + define void @stack_fold_vgetexppsmb_vgetexppsrb_test() #0 { ret void } + define void @stack_fold_vgetmantpdzrmbi_vgetmantpdzrrib_test() #0 { ret void } + define void @stack_fold_vgetmantpdzrmi_vgetmantpdzrri_test() #0 { ret void } + define void @stack_fold_vgetmantpszrmbi_vgetmantpszrrib_test() #0 { ret void } + define void @stack_fold_vgetmantpszrmi_vgetmantpszrri_test() #0 { ret void } + define void @stack_fold_vmov64topqizrm_vmov64topqizrr_test() #0 { ret void } + define void @stack_fold_vmovapdzrm_vmovapdzrr_test() #0 { ret void } + define void @stack_fold_vmovapszrm_vmovapszrr_test() #0 { ret void } + define void @stack_fold_vmovddupzrm_vmovddupzrr_test() #0 { ret void } + define void @stack_fold_vmovdi2pdizrm_vmovdi2pdizrr_test() #0 { ret void } + define void @stack_fold_vmovdi2sszrm_vmovdi2sszrr_test() #0 { ret void } + define void @stack_fold_vmovdqa32zrm_vmovdqa32zrr_test() #0 { ret void } + define void @stack_fold_vmovdqa64zrm_vmovdqa64zrr_test() #0 { ret void } + define void @stack_fold_vmovdqu32zrm_vmovdqu32zrr_test() #0 { ret void } + define void @stack_fold_vmovdqu64zrm_vmovdqu64zrr_test() #0 { ret void } + define void @stack_fold_vmovqi2pqizrm_vmovzpqilo2pqizrr_test() #0 { ret void } + define void @stack_fold_vmovshdupzrm_vmovshdupzrr_test() #0 { ret void } + define void @stack_fold_vmovsldupzrm_vmovsldupzrr_test() #0 { ret void } + define void @stack_fold_vmovupdzrm_vmovupdzrr_test() #0 { ret void } + define void @stack_fold_vmovupszrm_vmovupszrr_test() #0 { ret void } + define void @stack_fold_vpabsdzrm_vpabsdzrr_test() #0 { ret void } + define void @stack_fold_vpabsqzrm_vpabsqzrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastdzm_vpbroadcastdzr_test() #0 { ret void } + define void @stack_fold_vpbroadcastqzm_vpbroadcastqzr_test() #0 { ret void } + define void @stack_fold_vpermilpdzmi_vpermilpdzri_test() #0 { ret void } + define void @stack_fold_vpermilpszmi_vpermilpszri_test() #0 { ret void } + define void @stack_fold_vpermpdzmi_vpermpdzri_test() #0 { ret void } + define void @stack_fold_vpermqzmi_vpermqzri_test() #0 { ret void } + define void @stack_fold_vpexpanddzrm_vpexpanddzrr_test() #0 { ret void } + define void @stack_fold_vpexpandqzrm_vpexpandqzrr_test() #0 { ret void } + define void @stack_fold_vpmovsxbdzrm_vpmovsxbdzrr_test() #0 { ret void } + define void @stack_fold_vpmovsxbqzrm_vpmovsxbqzrr_test() #0 { ret void } + define void @stack_fold_vpmovsxdqzrm_vpmovsxdqzrr_test() #0 { ret void } + define void @stack_fold_vpmovsxwdzrm_vpmovsxwdzrr_test() #0 { ret void } + define void @stack_fold_vpmovsxwqzrm_vpmovsxwqzrr_test() #0 { ret void } + define void @stack_fold_vpmovzxbdzrm_vpmovzxbdzrr_test() #0 { ret void } + define void @stack_fold_vpmovzxbqzrm_vpmovzxbqzrr_test() #0 { ret void } + define void @stack_fold_vpmovzxdqzrm_vpmovzxdqzrr_test() #0 { ret void } + define void @stack_fold_vpmovzxwdzrm_vpmovzxwdzrr_test() #0 { ret void } + define void @stack_fold_vpmovzxwqzrm_vpmovzxwqzrr_test() #0 { ret void } + define void @stack_fold_vproldzmi_vproldzri_test() #0 { ret void } + define void @stack_fold_vprolqzmi_vprolqzri_test() #0 { ret void } + define void @stack_fold_vprordzmi_vprordzri_test() #0 { ret void } + define void @stack_fold_vprorqzmi_vprorqzri_test() #0 { ret void } + define void @stack_fold_vpshufdzmi_vpshufdzri_test() #0 { ret void } + define void @stack_fold_vpslldzmi_vpslldzri_test() #0 { ret void } + define void @stack_fold_vpsllqzmi_vpsllqzri_test() #0 { ret void } + define void @stack_fold_vpsradzmi_vpsradzri_test() #0 { ret void } + define void @stack_fold_vpsraqzmi_vpsraqzri_test() #0 { ret void } + define void @stack_fold_vpsrldzmi_vpsrldzri_test() #0 { ret void } + define void @stack_fold_vpsrlqzmi_vpsrlqzri_test() #0 { ret void } + define void @stack_fold_vrcp14pdzm_vrcp14pdzr_test() #0 { ret void } + define void @stack_fold_vrcp14pszm_vrcp14pszr_test() #0 { ret void } + define void @stack_fold_vrndscalepdzrmbi_vrndscalepdzrrib_test() #0 { ret void } + define void @stack_fold_vrndscalepdzrmi_vrndscalepdzrri_test() #0 { ret void } + define void @stack_fold_vrndscalepszrmbi_vrndscalepszrrib_test() #0 { ret void } + define void @stack_fold_vrndscalepszrmi_vrndscalepszrri_test() #0 { ret void } + define void @stack_fold_vrsqrt14pdzm_vrsqrt14pdzr_test() #0 { ret void } + define void @stack_fold_vrsqrt14pszm_vrsqrt14pszr_test() #0 { ret void } + define void @stack_fold_vsqrtpdzm_vsqrtpdzr_test() #0 { ret void } + define void @stack_fold_vsqrtpszm_vsqrtpszr_test() #0 { ret void } + define void @stack_fold_vucomisdzrm_vucomisdzrr_test() #0 { ret void } + define void @stack_fold_vucomisszrm_vucomisszrr_test() #0 { ret void } + define void @stack_fold_vaddpdzrm_vaddpdzrr_test() #0 { ret void } + define void @stack_fold_vaddpszrm_vaddpszrr_test() #0 { ret void } + define void @stack_fold_vaddsdzrm_vaddsdzrr_test() #0 { ret void } + define void @stack_fold_vaddsdzrm_int_vaddsdzrr_int_test() #0 { ret void } + define void @stack_fold_vaddsszrm_vaddsszrr_test() #0 { ret void } + define void @stack_fold_vaddsszrm_int_vaddsszrr_int_test() #0 { ret void } + define void @stack_fold_valigndzrmi_valigndzrri_test() #0 { ret void } + define void @stack_fold_valignqzrmi_valignqzrri_test() #0 { ret void } + define void @stack_fold_vblendmpdzrm_vblendmpdzrr_test() #0 { ret void } + define void @stack_fold_vblendmpszrm_vblendmpszrr_test() #0 { ret void } + define void @stack_fold_vbroadcastsdzmkz_vbroadcastsdzrkz_test() #0 { ret void } + define void @stack_fold_vbroadcastsszmkz_vbroadcastsszrkz_test() #0 { ret void } + define void @stack_fold_vcmppdzrmbi_vcmppdzrrib_test() #0 { ret void } + define void @stack_fold_vcmppdzrmbi_alt_vcmppdzrrib_alt_test() #0 { ret void } + define void @stack_fold_vcmppdzrmi_vcmppdzrri_test() #0 { ret void } + define void @stack_fold_vcmppdzrmi_alt_vcmppdzrri_alt_test() #0 { ret void } + define void @stack_fold_vcmppszrmbi_vcmppszrrib_test() #0 { ret void } + define void @stack_fold_vcmppszrmbi_alt_vcmppszrrib_alt_test() #0 { ret void } + define void @stack_fold_vcmppszrmi_vcmppszrri_test() #0 { ret void } + define void @stack_fold_vcmppszrmi_alt_vcmppszrri_alt_test() #0 { ret void } + define void @stack_fold_vcmpsdzrm_vcmpsdzrr_test() #0 { ret void } + define void @stack_fold_vcmpsdzrm_int_vcmpsdzrr_int_test() #0 { ret void } + define void @stack_fold_vcmpsdzrmi_alt_vcmpsdzrri_alt_test() #0 { ret void } + define void @stack_fold_vcmpsszrm_vcmpsszrr_test() #0 { ret void } + define void @stack_fold_vcmpsszrm_int_vcmpsszrr_int_test() #0 { ret void } + define void @stack_fold_vcmpsszrmi_alt_vcmpsszrri_alt_test() #0 { ret void } + define void @stack_fold_vcvtdq2pdzrmkz_vcvtdq2pdzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtdq2pszrmkz_vcvtdq2pszrrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2dqzrmkz_vcvtpd2dqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2pszrmkz_vcvtpd2pszrrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2udqzrmkz_vcvtpd2udqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtph2pszrmkz_vcvtph2pszrrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2dqzrmkz_vcvtps2dqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2pdzrmbkz_vcvtps2pdzrrbkz_test() #0 { ret void } + define void @stack_fold_vcvtps2pdzrmkz_vcvtps2pdzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2udqzrmkz_vcvtps2udqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtsi2sdzrm_vcvtsi2sdzrr_test() #0 { ret void } + define void @stack_fold_vcvtsi2sdzrm_int_vcvtsi2sdzrr_int_test() #0 { ret void } + define void @stack_fold_vcvtsi2sszrm_vcvtsi2sszrr_test() #0 { ret void } + define void @stack_fold_vcvtsi2sszrm_int_vcvtsi2sszrr_int_test() #0 { ret void } + define void @stack_fold_vcvtsi642sdzrm_vcvtsi642sdzrr_test() #0 { ret void } + define void @stack_fold_vcvtsi642sdzrm_int_vcvtsi642sdzrr_int_test() #0 { ret void } + define void @stack_fold_vcvtsi642sszrm_vcvtsi642sszrr_test() #0 { ret void } + define void @stack_fold_vcvtsi642sszrm_int_vcvtsi642sszrr_int_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqzrmbkz_vcvttpd2dqzrrbkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqzrmkz_vcvttpd2dqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqzrmbkz_vcvttpd2udqzrrbkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqzrmkz_vcvttpd2udqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2dqzrmbkz_vcvttps2dqzrrbkz_test() #0 { ret void } + define void @stack_fold_vcvttps2dqzrmkz_vcvttps2dqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2udqzrmbkz_vcvttps2udqzrrbkz_test() #0 { ret void } + define void @stack_fold_vcvttps2udqzrmkz_vcvttps2udqzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtudq2pdzrmkz_vcvtudq2pdzrrkz_test() #0 { ret void } + define void @stack_fold_vcvtudq2pszrmkz_vcvtudq2pszrrkz_test() #0 { ret void } + define void @stack_fold_vcvtusi2sdzrm_vcvtusi2sdzrr_test() #0 { ret void } + define void @stack_fold_vcvtusi2sdzrm_int_vcvtusi2sdzrr_int_test() #0 { ret void } + define void @stack_fold_vcvtusi2sszrm_vcvtusi2sszrr_test() #0 { ret void } + define void @stack_fold_vcvtusi2sszrm_int_vcvtusi2sszrr_int_test() #0 { ret void } + define void @stack_fold_vcvtusi642sdzrm_vcvtusi642sdzrr_test() #0 { ret void } + define void @stack_fold_vcvtusi642sdzrm_int_vcvtusi642sdzrr_int_test() #0 { ret void } + define void @stack_fold_vcvtusi642sszrm_vcvtusi642sszrr_test() #0 { ret void } + define void @stack_fold_vcvtusi642sszrm_int_vcvtusi642sszrr_int_test() #0 { ret void } + define void @stack_fold_vdivpdzrm_vdivpdzrr_test() #0 { ret void } + define void @stack_fold_vdivpszrm_vdivpszrr_test() #0 { ret void } + define void @stack_fold_vdivsdzrm_vdivsdzrr_test() #0 { ret void } + define void @stack_fold_vdivsdzrm_int_vdivsdzrr_int_test() #0 { ret void } + define void @stack_fold_vdivsszrm_vdivsszrr_test() #0 { ret void } + define void @stack_fold_vdivsszrm_int_vdivsszrr_int_test() #0 { ret void } + define void @stack_fold_vexpandpdzrmkz_vexpandpdzrrkz_test() #0 { ret void } + define void @stack_fold_vexpandpszrmkz_vexpandpszrrkz_test() #0 { ret void } + define void @stack_fold_vgetexppdmbkz_vgetexppdrbkz_test() #0 { ret void } + define void @stack_fold_vgetexppdmkz_vgetexppdrkz_test() #0 { ret void } + define void @stack_fold_vgetexppsmbkz_vgetexppsrbkz_test() #0 { ret void } + define void @stack_fold_vgetexppsmkz_vgetexppsrkz_test() #0 { ret void } + define void @stack_fold_vgetexpsdm_vgetexpsdr_test() #0 { ret void } + define void @stack_fold_vgetexpssm_vgetexpssr_test() #0 { ret void } + define void @stack_fold_vgetmantpdzrmbikz_vgetmantpdzrribkz_test() #0 { ret void } + define void @stack_fold_vgetmantpdzrmikz_vgetmantpdzrrikz_test() #0 { ret void } + define void @stack_fold_vgetmantpszrmbikz_vgetmantpszrribkz_test() #0 { ret void } + define void @stack_fold_vgetmantpszrmikz_vgetmantpszrrikz_test() #0 { ret void } + define void @stack_fold_vgetmantsdz128rmi_vgetmantsdz128rri_test() #0 { ret void } + define void @stack_fold_vgetmantssz128rmi_vgetmantssz128rri_test() #0 { ret void } + define void @stack_fold_vinsertf32x4zrm_vinsertf32x4zrr_test() #0 { ret void } + define void @stack_fold_vinsertf64x4zrm_vinsertf64x4zrr_test() #0 { ret void } + define void @stack_fold_vinserti32x4zrm_vinserti32x4zrr_test() #0 { ret void } + define void @stack_fold_vinserti64x4zrm_vinserti64x4zrr_test() #0 { ret void } + define void @stack_fold_vinsertpszrm_vinsertpszrr_test() #0 { ret void } + define void @stack_fold_vmaxcpdzrm_vmaxcpdzrr_test() #0 { ret void } + define void @stack_fold_vmaxcpdzrmb_vmaxpdzrb_test() #0 { ret void } + define void @stack_fold_vmaxcpszrm_vmaxcpszrr_test() #0 { ret void } + define void @stack_fold_vmaxcpszrmb_vmaxpszrb_test() #0 { ret void } + define void @stack_fold_vmaxcsdzrm_vmaxcsdzrr_test() #0 { ret void } + define void @stack_fold_vmaxcsszrm_vmaxcsszrr_test() #0 { ret void } + define void @stack_fold_vmaxpdzrm_vmaxpdzrr_test() #0 { ret void } + define void @stack_fold_vmaxpszrm_vmaxpszrr_test() #0 { ret void } + define void @stack_fold_vmaxsdzrm_vmaxsdzrr_test() #0 { ret void } + define void @stack_fold_vmaxsdzrm_int_vmaxsdzrr_int_test() #0 { ret void } + define void @stack_fold_vmaxsszrm_vmaxsszrr_test() #0 { ret void } + define void @stack_fold_vmaxsszrm_int_vmaxsszrr_int_test() #0 { ret void } + define void @stack_fold_vmincpdzrm_vmincpdzrr_test() #0 { ret void } + define void @stack_fold_vmincpdzrmb_vminpdzrb_test() #0 { ret void } + define void @stack_fold_vmincpszrm_vmincpszrr_test() #0 { ret void } + define void @stack_fold_vmincpszrmb_vminpszrb_test() #0 { ret void } + define void @stack_fold_vmincsdzrm_vmincsdzrr_test() #0 { ret void } + define void @stack_fold_vmincsszrm_vmincsszrr_test() #0 { ret void } + define void @stack_fold_vminpdzrm_vminpdzrr_test() #0 { ret void } + define void @stack_fold_vminpszrm_vminpszrr_test() #0 { ret void } + define void @stack_fold_vminsdzrm_vminsdzrr_test() #0 { ret void } + define void @stack_fold_vminsdzrm_int_vminsdzrr_int_test() #0 { ret void } + define void @stack_fold_vminsszrm_vminsszrr_test() #0 { ret void } + define void @stack_fold_vminsszrm_int_vminsszrr_int_test() #0 { ret void } + define void @stack_fold_vmovapdzrmkz_vmovapdzrrkz_test() #0 { ret void } + define void @stack_fold_vmovapszrmkz_vmovapszrrkz_test() #0 { ret void } + define void @stack_fold_vmovddupzrmkz_vmovddupzrrkz_test() #0 { ret void } + define void @stack_fold_vmovdqa32zrmkz_vmovdqa32zrrkz_test() #0 { ret void } + define void @stack_fold_vmovdqa64zrmkz_vmovdqa64zrrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu32zrmkz_vmovdqu32zrrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu64zrmkz_vmovdqu64zrrkz_test() #0 { ret void } + define void @stack_fold_vmovhpsz128rm_vmovlhpszrr_test() #0 { ret void } + define void @stack_fold_vmovlpsz128rm_vmovhlpszrr_test() #0 { ret void } + define void @stack_fold_vmovshdupzrmkz_vmovshdupzrrkz_test() #0 { ret void } + define void @stack_fold_vmovsldupzrmkz_vmovsldupzrrkz_test() #0 { ret void } + define void @stack_fold_vmovupdzrmkz_vmovupdzrrkz_test() #0 { ret void } + define void @stack_fold_vmovupszrmkz_vmovupszrrkz_test() #0 { ret void } + define void @stack_fold_vmulpdzrm_vmulpdzrr_test() #0 { ret void } + define void @stack_fold_vmulpszrm_vmulpszrr_test() #0 { ret void } + define void @stack_fold_vmulsdzrm_vmulsdzrr_test() #0 { ret void } + define void @stack_fold_vmulsdzrm_int_vmulsdzrr_int_test() #0 { ret void } + define void @stack_fold_vmulsszrm_vmulsszrr_test() #0 { ret void } + define void @stack_fold_vmulsszrm_int_vmulsszrr_int_test() #0 { ret void } + define void @stack_fold_vpabsdzrmkz_vpabsdzrrkz_test() #0 { ret void } + define void @stack_fold_vpabsqzrmkz_vpabsqzrrkz_test() #0 { ret void } + define void @stack_fold_vpadddzrm_vpadddzrr_test() #0 { ret void } + define void @stack_fold_vpaddqzrm_vpaddqzrr_test() #0 { ret void } + define void @stack_fold_vpanddzrm_vpanddzrr_test() #0 { ret void } + define void @stack_fold_vpandndzrm_vpandndzrr_test() #0 { ret void } + define void @stack_fold_vpandnqzrm_vpandnqzrr_test() #0 { ret void } + define void @stack_fold_vpandqzrm_vpandqzrr_test() #0 { ret void } + define void @stack_fold_vpblendmdzrm_vpblendmdzrr_test() #0 { ret void } + define void @stack_fold_vpblendmqzrm_vpblendmqzrr_test() #0 { ret void } + define void @stack_fold_vpbroadcastdzmkz_vpbroadcastdzrkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastqzmkz_vpbroadcastqzrkz_test() #0 { ret void } + define void @stack_fold_vpcmpdzrmi_vpcmpdzrri_test() #0 { ret void } + define void @stack_fold_vpcmpdzrmi_alt_vpcmpdzrri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpeqdzrm_vpcmpeqdzrr_test() #0 { ret void } + define void @stack_fold_vpcmpeqqzrm_vpcmpeqqzrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtdzrm_vpcmpgtdzrr_test() #0 { ret void } + define void @stack_fold_vpcmpgtqzrm_vpcmpgtqzrr_test() #0 { ret void } + define void @stack_fold_vpcmpqzrmi_vpcmpqzrri_test() #0 { ret void } + define void @stack_fold_vpcmpqzrmi_alt_vpcmpqzrri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpudzrmi_vpcmpudzrri_test() #0 { ret void } + define void @stack_fold_vpcmpudzrmi_alt_vpcmpudzrri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuqzrmi_vpcmpuqzrri_test() #0 { ret void } + define void @stack_fold_vpcmpuqzrmi_alt_vpcmpuqzrri_alt_test() #0 { ret void } + define void @stack_fold_vpermdzrm_vpermdzrr_test() #0 { ret void } + define void @stack_fold_vpermilpdzmikz_vpermilpdzrikz_test() #0 { ret void } + define void @stack_fold_vpermilpdzrm_vpermilpdzrr_test() #0 { ret void } + define void @stack_fold_vpermilpszmikz_vpermilpszrikz_test() #0 { ret void } + define void @stack_fold_vpermilpszrm_vpermilpszrr_test() #0 { ret void } + define void @stack_fold_vpermpdzmikz_vpermpdzrikz_test() #0 { ret void } + define void @stack_fold_vpermpdzrm_vpermpdzrr_test() #0 { ret void } + define void @stack_fold_vpermpszrm_vpermpszrr_test() #0 { ret void } + define void @stack_fold_vpermqzmikz_vpermqzrikz_test() #0 { ret void } + define void @stack_fold_vpermqzrm_vpermqzrr_test() #0 { ret void } + define void @stack_fold_vpexpanddzrmkz_vpexpanddzrrkz_test() #0 { ret void } + define void @stack_fold_vpexpandqzrmkz_vpexpandqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmaxsdzrm_vpmaxsdzrr_test() #0 { ret void } + define void @stack_fold_vpmaxsqzrm_vpmaxsqzrr_test() #0 { ret void } + define void @stack_fold_vpmaxudzrm_vpmaxudzrr_test() #0 { ret void } + define void @stack_fold_vpmaxuqzrm_vpmaxuqzrr_test() #0 { ret void } + define void @stack_fold_vpminsdzrm_vpminsdzrr_test() #0 { ret void } + define void @stack_fold_vpminsqzrm_vpminsqzrr_test() #0 { ret void } + define void @stack_fold_vpminudzrm_vpminudzrr_test() #0 { ret void } + define void @stack_fold_vpminuqzrm_vpminuqzrr_test() #0 { ret void } + define void @stack_fold_vpmovsxbdzrmkz_vpmovsxbdzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxbqzrmkz_vpmovsxbqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxdqzrmkz_vpmovsxdqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxwdzrmkz_vpmovsxwdzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxwqzrmkz_vpmovsxwqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxbdzrmkz_vpmovzxbdzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxbqzrmkz_vpmovzxbqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxdqzrmkz_vpmovzxdqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxwdzrmkz_vpmovzxwdzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxwqzrmkz_vpmovzxwqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmuldqzrm_vpmuldqzrr_test() #0 { ret void } + define void @stack_fold_vpmulldzrm_vpmulldzrr_test() #0 { ret void } + define void @stack_fold_vpmuludqzrm_vpmuludqzrr_test() #0 { ret void } + define void @stack_fold_vpordzrm_vpordzrr_test() #0 { ret void } + define void @stack_fold_vporqzrm_vporqzrr_test() #0 { ret void } + define void @stack_fold_vproldzmikz_vproldzrikz_test() #0 { ret void } + define void @stack_fold_vprolqzmikz_vprolqzrikz_test() #0 { ret void } + define void @stack_fold_vprolvdzrm_vprolvdzrr_test() #0 { ret void } + define void @stack_fold_vprolvqzrm_vprolvqzrr_test() #0 { ret void } + define void @stack_fold_vprordzmikz_vprordzrikz_test() #0 { ret void } + define void @stack_fold_vprorqzmikz_vprorqzrikz_test() #0 { ret void } + define void @stack_fold_vprorvdzrm_vprorvdzrr_test() #0 { ret void } + define void @stack_fold_vprorvqzrm_vprorvqzrr_test() #0 { ret void } + define void @stack_fold_vpshufdzmikz_vpshufdzrikz_test() #0 { ret void } + define void @stack_fold_vpslldzmikz_vpslldzrikz_test() #0 { ret void } + define void @stack_fold_vpslldzrm_vpslldzrr_test() #0 { ret void } + define void @stack_fold_vpsllqzmikz_vpsllqzrikz_test() #0 { ret void } + define void @stack_fold_vpsllqzrm_vpsllqzrr_test() #0 { ret void } + define void @stack_fold_vpsllvdzrm_vpsllvdzrr_test() #0 { ret void } + define void @stack_fold_vpsllvqzrm_vpsllvqzrr_test() #0 { ret void } + define void @stack_fold_vpsradzmikz_vpsradzrikz_test() #0 { ret void } + define void @stack_fold_vpsradzrm_vpsradzrr_test() #0 { ret void } + define void @stack_fold_vpsraqzmikz_vpsraqzrikz_test() #0 { ret void } + define void @stack_fold_vpsraqzrm_vpsraqzrr_test() #0 { ret void } + define void @stack_fold_vpsravdzrm_vpsravdzrr_test() #0 { ret void } + define void @stack_fold_vpsravqzrm_vpsravqzrr_test() #0 { ret void } + define void @stack_fold_vpsrldzmikz_vpsrldzrikz_test() #0 { ret void } + define void @stack_fold_vpsrldzrm_vpsrldzrr_test() #0 { ret void } + define void @stack_fold_vpsrlqzmikz_vpsrlqzrikz_test() #0 { ret void } + define void @stack_fold_vpsrlqzrm_vpsrlqzrr_test() #0 { ret void } + define void @stack_fold_vpsrlvdzrm_vpsrlvdzrr_test() #0 { ret void } + define void @stack_fold_vpsrlvqzrm_vpsrlvqzrr_test() #0 { ret void } + define void @stack_fold_vpsubdzrm_vpsubdzrr_test() #0 { ret void } + define void @stack_fold_vpsubqzrm_vpsubqzrr_test() #0 { ret void } + define void @stack_fold_vptestmdzrm_vptestmdzrr_test() #0 { ret void } + define void @stack_fold_vptestmqzrm_vptestmqzrr_test() #0 { ret void } + define void @stack_fold_vptestnmdzrm_vptestnmdzrr_test() #0 { ret void } + define void @stack_fold_vptestnmqzrm_vptestnmqzrr_test() #0 { ret void } + define void @stack_fold_vpunpckhdqzrm_vpunpckhdqzrr_test() #0 { ret void } + define void @stack_fold_vpunpckhqdqzrm_vpunpckhqdqzrr_test() #0 { ret void } + define void @stack_fold_vpunpckldqzrm_vpunpckldqzrr_test() #0 { ret void } + define void @stack_fold_vpunpcklqdqzrm_vpunpcklqdqzrr_test() #0 { ret void } + define void @stack_fold_vpxordzrm_vpxordzrr_test() #0 { ret void } + define void @stack_fold_vpxorqzrm_vpxorqzrr_test() #0 { ret void } + define void @stack_fold_vrcp14pdzmkz_vrcp14pdzrkz_test() #0 { ret void } + define void @stack_fold_vrcp14pszmkz_vrcp14pszrkz_test() #0 { ret void } + define void @stack_fold_vrndscalepdzrmbikz_vrndscalepdzrribkz_test() #0 { ret void } + define void @stack_fold_vrndscalepdzrmikz_vrndscalepdzrrikz_test() #0 { ret void } + define void @stack_fold_vrndscalepszrmbikz_vrndscalepszrribkz_test() #0 { ret void } + define void @stack_fold_vrndscalepszrmikz_vrndscalepszrrikz_test() #0 { ret void } + define void @stack_fold_vrndscalesdm_vrndscalesdr_test() #0 { ret void } + define void @stack_fold_vrndscalessm_vrndscalessr_test() #0 { ret void } + define void @stack_fold_vrsqrt14pdzmkz_vrsqrt14pdzrkz_test() #0 { ret void } + define void @stack_fold_vrsqrt14pszmkz_vrsqrt14pszrkz_test() #0 { ret void } + define void @stack_fold_vscalefpdzrm_vscalefpdzrr_test() #0 { ret void } + define void @stack_fold_vscalefpszrm_vscalefpszrr_test() #0 { ret void } + define void @stack_fold_vscalefsdz128rm_vscalefsdz128rr_test() #0 { ret void } + define void @stack_fold_vscalefssz128rm_vscalefssz128rr_test() #0 { ret void } + define void @stack_fold_vshuff32x4zrmi_vshuff32x4zrri_test() #0 { ret void } + define void @stack_fold_vshuff64x2zrmi_vshuff64x2zrri_test() #0 { ret void } + define void @stack_fold_vshufi32x4zrmi_vshufi32x4zrri_test() #0 { ret void } + define void @stack_fold_vshufi64x2zrmi_vshufi64x2zrri_test() #0 { ret void } + define void @stack_fold_vshufpdzrmi_vshufpdzrri_test() #0 { ret void } + define void @stack_fold_vshufpszrmi_vshufpszrri_test() #0 { ret void } + define void @stack_fold_vsqrtpdzmkz_vsqrtpdzrkz_test() #0 { ret void } + define void @stack_fold_vsqrtpszmkz_vsqrtpszrkz_test() #0 { ret void } + define void @stack_fold_vsubpdzrm_vsubpdzrr_test() #0 { ret void } + define void @stack_fold_vsubpszrm_vsubpszrr_test() #0 { ret void } + define void @stack_fold_vsubsdzrm_vsubsdzrr_test() #0 { ret void } + define void @stack_fold_vsubsdzrm_int_vsubsdzrr_int_test() #0 { ret void } + define void @stack_fold_vsubsszrm_vsubsszrr_test() #0 { ret void } + define void @stack_fold_vsubsszrm_int_vsubsszrr_int_test() #0 { ret void } + define void @stack_fold_vunpckhpdzrm_vunpckhpdzrr_test() #0 { ret void } + define void @stack_fold_vunpckhpszrm_vunpckhpszrr_test() #0 { ret void } + define void @stack_fold_vunpcklpdzrm_vunpcklpdzrr_test() #0 { ret void } + define void @stack_fold_vunpcklpszrm_vunpcklpszrr_test() #0 { ret void } + define void @stack_fold_vaddpdzrmkz_vaddpdzrrkz_test() #0 { ret void } + define void @stack_fold_vaddpszrmkz_vaddpszrrkz_test() #0 { ret void } + define void @stack_fold_vaddsdzrm_intkz_vaddsdzrr_intkz_test() #0 { ret void } + define void @stack_fold_vaddsszrm_intkz_vaddsszrr_intkz_test() #0 { ret void } + define void @stack_fold_valigndzrmikz_valigndzrrikz_test() #0 { ret void } + define void @stack_fold_valignqzrmikz_valignqzrrikz_test() #0 { ret void } + define void @stack_fold_vblendmpdzrmk_vblendmpdzrrk_test() #0 { ret void } + define void @stack_fold_vblendmpdzrmkz_vblendmpdzrrkz_test() #0 { ret void } + define void @stack_fold_vblendmpszrmk_vblendmpszrrk_test() #0 { ret void } + define void @stack_fold_vblendmpszrmkz_vblendmpszrrkz_test() #0 { ret void } + define void @stack_fold_vbroadcastsdzmk_vbroadcastsdzrk_test() #0 { ret void } + define void @stack_fold_vbroadcastsszmk_vbroadcastsszrk_test() #0 { ret void } + define void @stack_fold_vcmppdzrmbi_altk_vcmppdzrrib_altk_test() #0 { ret void } + define void @stack_fold_vcmppdzrmbik_vcmppdzrribk_test() #0 { ret void } + define void @stack_fold_vcmppdzrmi_altk_vcmppdzrri_altk_test() #0 { ret void } + define void @stack_fold_vcmppdzrmik_vcmppdzrrik_test() #0 { ret void } + define void @stack_fold_vcmppszrmbi_altk_vcmppszrrib_altk_test() #0 { ret void } + define void @stack_fold_vcmppszrmbik_vcmppszrribk_test() #0 { ret void } + define void @stack_fold_vcmppszrmi_altk_vcmppszrri_altk_test() #0 { ret void } + define void @stack_fold_vcmppszrmik_vcmppszrrik_test() #0 { ret void } + define void @stack_fold_vcmpsdzrm_intk_vcmpsdzrr_intk_test() #0 { ret void } + define void @stack_fold_vcmpsdzrmi_altk_vcmpsdzrri_altk_test() #0 { ret void } + define void @stack_fold_vcmpsszrm_intk_vcmpsszrr_intk_test() #0 { ret void } + define void @stack_fold_vcmpsszrmi_altk_vcmpsszrri_altk_test() #0 { ret void } + define void @stack_fold_vcvtdq2pdzrmk_vcvtdq2pdzrrk_test() #0 { ret void } + define void @stack_fold_vcvtdq2pszrmk_vcvtdq2pszrrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2dqzrmk_vcvtpd2dqzrrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2pszrmk_vcvtpd2pszrrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2udqzrmk_vcvtpd2udqzrrk_test() #0 { ret void } + define void @stack_fold_vcvtph2pszrmk_vcvtph2pszrrk_test() #0 { ret void } + define void @stack_fold_vcvtps2dqzrmk_vcvtps2dqzrrk_test() #0 { ret void } + define void @stack_fold_vcvtps2pdzrmbk_vcvtps2pdzrrbk_test() #0 { ret void } + define void @stack_fold_vcvtps2pdzrmk_vcvtps2pdzrrk_test() #0 { ret void } + define void @stack_fold_vcvtps2udqzrmk_vcvtps2udqzrrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqzrmbk_vcvttpd2dqzrrbk_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqzrmk_vcvttpd2dqzrrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqzrmbk_vcvttpd2udqzrrbk_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqzrmk_vcvttpd2udqzrrk_test() #0 { ret void } + define void @stack_fold_vcvttps2dqzrmbk_vcvttps2dqzrrbk_test() #0 { ret void } + define void @stack_fold_vcvttps2dqzrmk_vcvttps2dqzrrk_test() #0 { ret void } + define void @stack_fold_vcvttps2udqzrmbk_vcvttps2udqzrrbk_test() #0 { ret void } + define void @stack_fold_vcvttps2udqzrmk_vcvttps2udqzrrk_test() #0 { ret void } + define void @stack_fold_vcvtudq2pdzrmk_vcvtudq2pdzrrk_test() #0 { ret void } + define void @stack_fold_vcvtudq2pszrmk_vcvtudq2pszrrk_test() #0 { ret void } + define void @stack_fold_vdivpdzrmkz_vdivpdzrrkz_test() #0 { ret void } + define void @stack_fold_vdivpszrmkz_vdivpszrrkz_test() #0 { ret void } + define void @stack_fold_vdivsdzrm_intkz_vdivsdzrr_intkz_test() #0 { ret void } + define void @stack_fold_vdivsszrm_intkz_vdivsszrr_intkz_test() #0 { ret void } + define void @stack_fold_vexpandpdzrmk_vexpandpdzrrk_test() #0 { ret void } + define void @stack_fold_vexpandpszrmk_vexpandpszrrk_test() #0 { ret void } + define void @stack_fold_vfixupimmpdzrmbi_vfixupimmpdzrrib_test() #0 { ret void } + define void @stack_fold_vfixupimmpdzrmi_vfixupimmpdzrri_test() #0 { ret void } + define void @stack_fold_vfixupimmpszrmbi_vfixupimmpszrrib_test() #0 { ret void } + define void @stack_fold_vfixupimmpszrmi_vfixupimmpszrri_test() #0 { ret void } + define void @stack_fold_vfixupimmsdrmi_vfixupimmsdrri_test() #0 { ret void } + define void @stack_fold_vfixupimmssrmi_vfixupimmssrri_test() #0 { ret void } + define void @stack_fold_vfmadd132pdzm_vfmadd132pdzr_test() #0 { ret void } + define void @stack_fold_vfmadd132pszm_vfmadd132pszr_test() #0 { ret void } + define void @stack_fold_vfmadd132sdzm_vfmadd132sdzr_test() #0 { ret void } + define void @stack_fold_vfmadd132sdzm_int_vfmadd132sdzr_int_test() #0 { ret void } + define void @stack_fold_vfmadd132sszm_vfmadd132sszr_test() #0 { ret void } + define void @stack_fold_vfmadd132sszm_int_vfmadd132sszr_int_test() #0 { ret void } + define void @stack_fold_vfmadd213pdzm_vfmadd213pdzr_test() #0 { ret void } + define void @stack_fold_vfmadd213pszm_vfmadd213pszr_test() #0 { ret void } + define void @stack_fold_vfmadd213sdzm_vfmadd213sdzr_test() #0 { ret void } + define void @stack_fold_vfmadd213sdzm_int_vfmadd213sdzr_int_test() #0 { ret void } + define void @stack_fold_vfmadd213sszm_vfmadd213sszr_test() #0 { ret void } + define void @stack_fold_vfmadd213sszm_int_vfmadd213sszr_int_test() #0 { ret void } + define void @stack_fold_vfmadd231pdzm_vfmadd231pdzr_test() #0 { ret void } + define void @stack_fold_vfmadd231pszm_vfmadd231pszr_test() #0 { ret void } + define void @stack_fold_vfmadd231sdzm_vfmadd231sdzr_test() #0 { ret void } + define void @stack_fold_vfmadd231sdzm_int_vfmadd231sdzr_int_test() #0 { ret void } + define void @stack_fold_vfmadd231sszm_vfmadd231sszr_test() #0 { ret void } + define void @stack_fold_vfmadd231sszm_int_vfmadd231sszr_int_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pdzm_vfmaddsub132pdzr_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pszm_vfmaddsub132pszr_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pdzm_vfmaddsub213pdzr_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pszm_vfmaddsub213pszr_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pdzm_vfmaddsub231pdzr_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pszm_vfmaddsub231pszr_test() #0 { ret void } + define void @stack_fold_vfmsub132pdzm_vfmsub132pdzr_test() #0 { ret void } + define void @stack_fold_vfmsub132pszm_vfmsub132pszr_test() #0 { ret void } + define void @stack_fold_vfmsub132sdzm_vfmsub132sdzr_test() #0 { ret void } + define void @stack_fold_vfmsub132sdzm_int_vfmsub132sdzr_int_test() #0 { ret void } + define void @stack_fold_vfmsub132sszm_vfmsub132sszr_test() #0 { ret void } + define void @stack_fold_vfmsub132sszm_int_vfmsub132sszr_int_test() #0 { ret void } + define void @stack_fold_vfmsub213pdzm_vfmsub213pdzr_test() #0 { ret void } + define void @stack_fold_vfmsub213pszm_vfmsub213pszr_test() #0 { ret void } + define void @stack_fold_vfmsub213sdzm_vfmsub213sdzr_test() #0 { ret void } + define void @stack_fold_vfmsub213sdzm_int_vfmsub213sdzr_int_test() #0 { ret void } + define void @stack_fold_vfmsub213sszm_vfmsub213sszr_test() #0 { ret void } + define void @stack_fold_vfmsub213sszm_int_vfmsub213sszr_int_test() #0 { ret void } + define void @stack_fold_vfmsub231pdzm_vfmsub231pdzr_test() #0 { ret void } + define void @stack_fold_vfmsub231pszm_vfmsub231pszr_test() #0 { ret void } + define void @stack_fold_vfmsub231sdzm_vfmsub231sdzr_test() #0 { ret void } + define void @stack_fold_vfmsub231sdzm_int_vfmsub231sdzr_int_test() #0 { ret void } + define void @stack_fold_vfmsub231sszm_vfmsub231sszr_test() #0 { ret void } + define void @stack_fold_vfmsub231sszm_int_vfmsub231sszr_int_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pdzm_vfmsubadd132pdzr_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pszm_vfmsubadd132pszr_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pdzm_vfmsubadd213pdzr_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pszm_vfmsubadd213pszr_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pdzm_vfmsubadd231pdzr_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pszm_vfmsubadd231pszr_test() #0 { ret void } + define void @stack_fold_vfnmadd132pdzm_vfnmadd132pdzr_test() #0 { ret void } + define void @stack_fold_vfnmadd132pszm_vfnmadd132pszr_test() #0 { ret void } + define void @stack_fold_vfnmadd132sdzm_vfnmadd132sdzr_test() #0 { ret void } + define void @stack_fold_vfnmadd132sdzm_int_vfnmadd132sdzr_int_test() #0 { ret void } + define void @stack_fold_vfnmadd132sszm_vfnmadd132sszr_test() #0 { ret void } + define void @stack_fold_vfnmadd132sszm_int_vfnmadd132sszr_int_test() #0 { ret void } + define void @stack_fold_vfnmadd213pdzm_vfnmadd213pdzr_test() #0 { ret void } + define void @stack_fold_vfnmadd213pszm_vfnmadd213pszr_test() #0 { ret void } + define void @stack_fold_vfnmadd213sdzm_vfnmadd213sdzr_test() #0 { ret void } + define void @stack_fold_vfnmadd213sdzm_int_vfnmadd213sdzr_int_test() #0 { ret void } + define void @stack_fold_vfnmadd213sszm_vfnmadd213sszr_test() #0 { ret void } + define void @stack_fold_vfnmadd213sszm_int_vfnmadd213sszr_int_test() #0 { ret void } + define void @stack_fold_vfnmadd231pdzm_vfnmadd231pdzr_test() #0 { ret void } + define void @stack_fold_vfnmadd231pszm_vfnmadd231pszr_test() #0 { ret void } + define void @stack_fold_vfnmadd231sdzm_vfnmadd231sdzr_test() #0 { ret void } + define void @stack_fold_vfnmadd231sdzm_int_vfnmadd231sdzr_int_test() #0 { ret void } + define void @stack_fold_vfnmadd231sszm_vfnmadd231sszr_test() #0 { ret void } + define void @stack_fold_vfnmadd231sszm_int_vfnmadd231sszr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub132pdzm_vfnmsub132pdzr_test() #0 { ret void } + define void @stack_fold_vfnmsub132pszm_vfnmsub132pszr_test() #0 { ret void } + define void @stack_fold_vfnmsub132sdzm_vfnmsub132sdzr_test() #0 { ret void } + define void @stack_fold_vfnmsub132sdzm_int_vfnmsub132sdzr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub132sszm_vfnmsub132sszr_test() #0 { ret void } + define void @stack_fold_vfnmsub132sszm_int_vfnmsub132sszr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub213pdzm_vfnmsub213pdzr_test() #0 { ret void } + define void @stack_fold_vfnmsub213pszm_vfnmsub213pszr_test() #0 { ret void } + define void @stack_fold_vfnmsub213sdzm_vfnmsub213sdzr_test() #0 { ret void } + define void @stack_fold_vfnmsub213sdzm_int_vfnmsub213sdzr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub213sszm_vfnmsub213sszr_test() #0 { ret void } + define void @stack_fold_vfnmsub213sszm_int_vfnmsub213sszr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub231pdzm_vfnmsub231pdzr_test() #0 { ret void } + define void @stack_fold_vfnmsub231pszm_vfnmsub231pszr_test() #0 { ret void } + define void @stack_fold_vfnmsub231sdzm_vfnmsub231sdzr_test() #0 { ret void } + define void @stack_fold_vfnmsub231sdzm_int_vfnmsub231sdzr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub231sszm_vfnmsub231sszr_test() #0 { ret void } + define void @stack_fold_vfnmsub231sszm_int_vfnmsub231sszr_int_test() #0 { ret void } + define void @stack_fold_vgetexppdmbk_vgetexppdrbk_test() #0 { ret void } + define void @stack_fold_vgetexppdmk_vgetexppdrk_test() #0 { ret void } + define void @stack_fold_vgetexppsmbk_vgetexppsrbk_test() #0 { ret void } + define void @stack_fold_vgetexppsmk_vgetexppsrk_test() #0 { ret void } + define void @stack_fold_vgetexpsdmkz_vgetexpsdrkz_test() #0 { ret void } + define void @stack_fold_vgetexpssmkz_vgetexpssrkz_test() #0 { ret void } + define void @stack_fold_vgetmantpdzrmbik_vgetmantpdzrribk_test() #0 { ret void } + define void @stack_fold_vgetmantpdzrmik_vgetmantpdzrrik_test() #0 { ret void } + define void @stack_fold_vgetmantpszrmbik_vgetmantpszrribk_test() #0 { ret void } + define void @stack_fold_vgetmantpszrmik_vgetmantpszrrik_test() #0 { ret void } + define void @stack_fold_vgetmantsdz128rmikz_vgetmantsdz128rrikz_test() #0 { ret void } + define void @stack_fold_vgetmantssz128rmikz_vgetmantssz128rrikz_test() #0 { ret void } + define void @stack_fold_vinsertf32x4zrmkz_vinsertf32x4zrrkz_test() #0 { ret void } + define void @stack_fold_vinsertf64x4zrmkz_vinsertf64x4zrrkz_test() #0 { ret void } + define void @stack_fold_vinserti32x4zrmkz_vinserti32x4zrrkz_test() #0 { ret void } + define void @stack_fold_vinserti64x4zrmkz_vinserti64x4zrrkz_test() #0 { ret void } + define void @stack_fold_vmaxcpdzrmbkz_vmaxpdzrbkz_test() #0 { ret void } + define void @stack_fold_vmaxcpdzrmkz_vmaxcpdzrrkz_test() #0 { ret void } + define void @stack_fold_vmaxcpszrmbkz_vmaxpszrbkz_test() #0 { ret void } + define void @stack_fold_vmaxcpszrmkz_vmaxcpszrrkz_test() #0 { ret void } + define void @stack_fold_vmaxpdzrmkz_vmaxpdzrrkz_test() #0 { ret void } + define void @stack_fold_vmaxpszrmkz_vmaxpszrrkz_test() #0 { ret void } + define void @stack_fold_vmaxsdzrm_intkz_vmaxsdzrr_intkz_test() #0 { ret void } + define void @stack_fold_vmaxsszrm_intkz_vmaxsszrr_intkz_test() #0 { ret void } + define void @stack_fold_vmincpdzrmbkz_vminpdzrbkz_test() #0 { ret void } + define void @stack_fold_vmincpdzrmkz_vmincpdzrrkz_test() #0 { ret void } + define void @stack_fold_vmincpszrmbkz_vminpszrbkz_test() #0 { ret void } + define void @stack_fold_vmincpszrmkz_vmincpszrrkz_test() #0 { ret void } + define void @stack_fold_vminpdzrmkz_vminpdzrrkz_test() #0 { ret void } + define void @stack_fold_vminpszrmkz_vminpszrrkz_test() #0 { ret void } + define void @stack_fold_vminsdzrm_intkz_vminsdzrr_intkz_test() #0 { ret void } + define void @stack_fold_vminsszrm_intkz_vminsszrr_intkz_test() #0 { ret void } + define void @stack_fold_vmovapdzrmk_vmovapdzrrk_test() #0 { ret void } + define void @stack_fold_vmovapszrmk_vmovapszrrk_test() #0 { ret void } + define void @stack_fold_vmovddupzrmk_vmovddupzrrk_test() #0 { ret void } + define void @stack_fold_vmovdqa32zrmk_vmovdqa32zrrk_test() #0 { ret void } + define void @stack_fold_vmovdqa64zrmk_vmovdqa64zrrk_test() #0 { ret void } + define void @stack_fold_vmovdqu32zrmk_vmovdqu32zrrk_test() #0 { ret void } + define void @stack_fold_vmovdqu64zrmk_vmovdqu64zrrk_test() #0 { ret void } + define void @stack_fold_vmovshdupzrmk_vmovshdupzrrk_test() #0 { ret void } + define void @stack_fold_vmovsldupzrmk_vmovsldupzrrk_test() #0 { ret void } + define void @stack_fold_vmovupdzrmk_vmovupdzrrk_test() #0 { ret void } + define void @stack_fold_vmovupszrmk_vmovupszrrk_test() #0 { ret void } + define void @stack_fold_vmulpdzrmkz_vmulpdzrrkz_test() #0 { ret void } + define void @stack_fold_vmulpszrmkz_vmulpszrrkz_test() #0 { ret void } + define void @stack_fold_vmulsdzrm_intkz_vmulsdzrr_intkz_test() #0 { ret void } + define void @stack_fold_vmulsszrm_intkz_vmulsszrr_intkz_test() #0 { ret void } + define void @stack_fold_vpabsdzrmk_vpabsdzrrk_test() #0 { ret void } + define void @stack_fold_vpabsqzrmk_vpabsqzrrk_test() #0 { ret void } + define void @stack_fold_vpadddzrmkz_vpadddzrrkz_test() #0 { ret void } + define void @stack_fold_vpaddqzrmkz_vpaddqzrrkz_test() #0 { ret void } + define void @stack_fold_vpanddzrmkz_vpanddzrrkz_test() #0 { ret void } + define void @stack_fold_vpandndzrmkz_vpandndzrrkz_test() #0 { ret void } + define void @stack_fold_vpandnqzrmkz_vpandnqzrrkz_test() #0 { ret void } + define void @stack_fold_vpandqzrmkz_vpandqzrrkz_test() #0 { ret void } + define void @stack_fold_vpblendmdzrmk_vpblendmdzrrk_test() #0 { ret void } + define void @stack_fold_vpblendmdzrmkz_vpblendmdzrrkz_test() #0 { ret void } + define void @stack_fold_vpblendmqzrmk_vpblendmqzrrk_test() #0 { ret void } + define void @stack_fold_vpblendmqzrmkz_vpblendmqzrrkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastdzmk_vpbroadcastdzrk_test() #0 { ret void } + define void @stack_fold_vpbroadcastqzmk_vpbroadcastqzrk_test() #0 { ret void } + define void @stack_fold_vpcmpdzrmik_vpcmpdzrrik_test() #0 { ret void } + define void @stack_fold_vpcmpdzrmik_alt_vpcmpdzrrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpeqdzrmk_vpcmpeqdzrrk_test() #0 { ret void } + define void @stack_fold_vpcmpeqqzrmk_vpcmpeqqzrrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtdzrmk_vpcmpgtdzrrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtqzrmk_vpcmpgtqzrrk_test() #0 { ret void } + define void @stack_fold_vpcmpqzrmik_vpcmpqzrrik_test() #0 { ret void } + define void @stack_fold_vpcmpqzrmik_alt_vpcmpqzrrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpudzrmik_vpcmpudzrrik_test() #0 { ret void } + define void @stack_fold_vpcmpudzrmik_alt_vpcmpudzrrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuqzrmik_vpcmpuqzrrik_test() #0 { ret void } + define void @stack_fold_vpcmpuqzrmik_alt_vpcmpuqzrrik_alt_test() #0 { ret void } + define void @stack_fold_vpermdzrmkz_vpermdzrrkz_test() #0 { ret void } + define void @stack_fold_vpermi2drm_vpermi2drr_test() #0 { ret void } + define void @stack_fold_vpermi2pdrm_vpermi2pdrr_test() #0 { ret void } + define void @stack_fold_vpermi2psrm_vpermi2psrr_test() #0 { ret void } + define void @stack_fold_vpermi2qrm_vpermi2qrr_test() #0 { ret void } + define void @stack_fold_vpermilpdzmik_vpermilpdzrik_test() #0 { ret void } + define void @stack_fold_vpermilpdzrmkz_vpermilpdzrrkz_test() #0 { ret void } + define void @stack_fold_vpermilpszmik_vpermilpszrik_test() #0 { ret void } + define void @stack_fold_vpermilpszrmkz_vpermilpszrrkz_test() #0 { ret void } + define void @stack_fold_vpermpdzmik_vpermpdzrik_test() #0 { ret void } + define void @stack_fold_vpermpdzrmkz_vpermpdzrrkz_test() #0 { ret void } + define void @stack_fold_vpermpszrmkz_vpermpszrrkz_test() #0 { ret void } + define void @stack_fold_vpermqzmik_vpermqzrik_test() #0 { ret void } + define void @stack_fold_vpermqzrmkz_vpermqzrrkz_test() #0 { ret void } + define void @stack_fold_vpermt2drm_vpermt2drr_test() #0 { ret void } + define void @stack_fold_vpermt2pdrm_vpermt2pdrr_test() #0 { ret void } + define void @stack_fold_vpermt2psrm_vpermt2psrr_test() #0 { ret void } + define void @stack_fold_vpermt2qrm_vpermt2qrr_test() #0 { ret void } + define void @stack_fold_vpexpanddzrmk_vpexpanddzrrk_test() #0 { ret void } + define void @stack_fold_vpexpandqzrmk_vpexpandqzrrk_test() #0 { ret void } + define void @stack_fold_vpmaxsdzrmkz_vpmaxsdzrrkz_test() #0 { ret void } + define void @stack_fold_vpmaxsqzrmkz_vpmaxsqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmaxudzrmkz_vpmaxudzrrkz_test() #0 { ret void } + define void @stack_fold_vpmaxuqzrmkz_vpmaxuqzrrkz_test() #0 { ret void } + define void @stack_fold_vpminsdzrmkz_vpminsdzrrkz_test() #0 { ret void } + define void @stack_fold_vpminsqzrmkz_vpminsqzrrkz_test() #0 { ret void } + define void @stack_fold_vpminudzrmkz_vpminudzrrkz_test() #0 { ret void } + define void @stack_fold_vpminuqzrmkz_vpminuqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxbdzrmk_vpmovsxbdzrrk_test() #0 { ret void } + define void @stack_fold_vpmovsxbqzrmk_vpmovsxbqzrrk_test() #0 { ret void } + define void @stack_fold_vpmovsxdqzrmk_vpmovsxdqzrrk_test() #0 { ret void } + define void @stack_fold_vpmovsxwdzrmk_vpmovsxwdzrrk_test() #0 { ret void } + define void @stack_fold_vpmovsxwqzrmk_vpmovsxwqzrrk_test() #0 { ret void } + define void @stack_fold_vpmovzxbdzrmk_vpmovzxbdzrrk_test() #0 { ret void } + define void @stack_fold_vpmovzxbqzrmk_vpmovzxbqzrrk_test() #0 { ret void } + define void @stack_fold_vpmovzxdqzrmk_vpmovzxdqzrrk_test() #0 { ret void } + define void @stack_fold_vpmovzxwdzrmk_vpmovzxwdzrrk_test() #0 { ret void } + define void @stack_fold_vpmovzxwqzrmk_vpmovzxwqzrrk_test() #0 { ret void } + define void @stack_fold_vpmuldqzrmkz_vpmuldqzrrkz_test() #0 { ret void } + define void @stack_fold_vpmulldzrmkz_vpmulldzrrkz_test() #0 { ret void } + define void @stack_fold_vpmuludqzrmkz_vpmuludqzrrkz_test() #0 { ret void } + define void @stack_fold_vpordzrmkz_vpordzrrkz_test() #0 { ret void } + define void @stack_fold_vporqzrmkz_vporqzrrkz_test() #0 { ret void } + define void @stack_fold_vproldzmik_vproldzrik_test() #0 { ret void } + define void @stack_fold_vprolqzmik_vprolqzrik_test() #0 { ret void } + define void @stack_fold_vprolvdzrmkz_vprolvdzrrkz_test() #0 { ret void } + define void @stack_fold_vprolvqzrmkz_vprolvqzrrkz_test() #0 { ret void } + define void @stack_fold_vprordzmik_vprordzrik_test() #0 { ret void } + define void @stack_fold_vprorqzmik_vprorqzrik_test() #0 { ret void } + define void @stack_fold_vprorvdzrmkz_vprorvdzrrkz_test() #0 { ret void } + define void @stack_fold_vprorvqzrmkz_vprorvqzrrkz_test() #0 { ret void } + define void @stack_fold_vpshufdzmik_vpshufdzrik_test() #0 { ret void } + define void @stack_fold_vpslldzmik_vpslldzrik_test() #0 { ret void } + define void @stack_fold_vpslldzrmkz_vpslldzrrkz_test() #0 { ret void } + define void @stack_fold_vpsllqzmik_vpsllqzrik_test() #0 { ret void } + define void @stack_fold_vpsllqzrmkz_vpsllqzrrkz_test() #0 { ret void } + define void @stack_fold_vpsllvdzrmkz_vpsllvdzrrkz_test() #0 { ret void } + define void @stack_fold_vpsllvqzrmkz_vpsllvqzrrkz_test() #0 { ret void } + define void @stack_fold_vpsradzmik_vpsradzrik_test() #0 { ret void } + define void @stack_fold_vpsradzrmkz_vpsradzrrkz_test() #0 { ret void } + define void @stack_fold_vpsraqzmik_vpsraqzrik_test() #0 { ret void } + define void @stack_fold_vpsraqzrmkz_vpsraqzrrkz_test() #0 { ret void } + define void @stack_fold_vpsravdzrmkz_vpsravdzrrkz_test() #0 { ret void } + define void @stack_fold_vpsravqzrmkz_vpsravqzrrkz_test() #0 { ret void } + define void @stack_fold_vpsrldzmik_vpsrldzrik_test() #0 { ret void } + define void @stack_fold_vpsrldzrmkz_vpsrldzrrkz_test() #0 { ret void } + define void @stack_fold_vpsrlqzmik_vpsrlqzrik_test() #0 { ret void } + define void @stack_fold_vpsrlqzrmkz_vpsrlqzrrkz_test() #0 { ret void } + define void @stack_fold_vpsrlvdzrmkz_vpsrlvdzrrkz_test() #0 { ret void } + define void @stack_fold_vpsrlvqzrmkz_vpsrlvqzrrkz_test() #0 { ret void } + define void @stack_fold_vpsubdzrmkz_vpsubdzrrkz_test() #0 { ret void } + define void @stack_fold_vpsubqzrmkz_vpsubqzrrkz_test() #0 { ret void } + define void @stack_fold_vpternlogdzrmi_vpternlogdzrri_test() #0 { ret void } + define void @stack_fold_vpternlogqzrmi_vpternlogqzrri_test() #0 { ret void } + define void @stack_fold_vptestmdzrmk_vptestmdzrrk_test() #0 { ret void } + define void @stack_fold_vptestmqzrmk_vptestmqzrrk_test() #0 { ret void } + define void @stack_fold_vptestnmdzrmk_vptestnmdzrrk_test() #0 { ret void } + define void @stack_fold_vptestnmqzrmk_vptestnmqzrrk_test() #0 { ret void } + define void @stack_fold_vpunpckhdqzrmkz_vpunpckhdqzrrkz_test() #0 { ret void } + define void @stack_fold_vpunpckhqdqzrmkz_vpunpckhqdqzrrkz_test() #0 { ret void } + define void @stack_fold_vpunpckldqzrmkz_vpunpckldqzrrkz_test() #0 { ret void } + define void @stack_fold_vpunpcklqdqzrmkz_vpunpcklqdqzrrkz_test() #0 { ret void } + define void @stack_fold_vpxordzrmkz_vpxordzrrkz_test() #0 { ret void } + define void @stack_fold_vpxorqzrmkz_vpxorqzrrkz_test() #0 { ret void } + define void @stack_fold_vrcp14pdzmk_vrcp14pdzrk_test() #0 { ret void } + define void @stack_fold_vrcp14pszmk_vrcp14pszrk_test() #0 { ret void } + define void @stack_fold_vrcp14sdrmkz_vrcp14sdrrkz_test() #0 { ret void } + define void @stack_fold_vrcp14ssrmkz_vrcp14ssrrkz_test() #0 { ret void } + define void @stack_fold_vrndscalepdzrmbik_vrndscalepdzrribk_test() #0 { ret void } + define void @stack_fold_vrndscalepdzrmik_vrndscalepdzrrik_test() #0 { ret void } + define void @stack_fold_vrndscalepszrmbik_vrndscalepszrribk_test() #0 { ret void } + define void @stack_fold_vrndscalepszrmik_vrndscalepszrrik_test() #0 { ret void } + define void @stack_fold_vrndscalesdmkz_vrndscalesdrkz_test() #0 { ret void } + define void @stack_fold_vrndscalessmkz_vrndscalessrkz_test() #0 { ret void } + define void @stack_fold_vrsqrt14pdzmk_vrsqrt14pdzrk_test() #0 { ret void } + define void @stack_fold_vrsqrt14pszmk_vrsqrt14pszrk_test() #0 { ret void } + define void @stack_fold_vrsqrt14sdrmkz_vrsqrt14sdrrkz_test() #0 { ret void } + define void @stack_fold_vrsqrt14ssrmkz_vrsqrt14ssrrkz_test() #0 { ret void } + define void @stack_fold_vscalefpdzrmkz_vscalefpdzrrkz_test() #0 { ret void } + define void @stack_fold_vscalefpszrmkz_vscalefpszrrkz_test() #0 { ret void } + define void @stack_fold_vscalefsdz128rmkz_vscalefsdz128rrkz_test() #0 { ret void } + define void @stack_fold_vscalefssz128rmkz_vscalefssz128rrkz_test() #0 { ret void } + define void @stack_fold_vshuff32x4zrmikz_vshuff32x4zrrikz_test() #0 { ret void } + define void @stack_fold_vshuff64x2zrmikz_vshuff64x2zrrikz_test() #0 { ret void } + define void @stack_fold_vshufi32x4zrmikz_vshufi32x4zrrikz_test() #0 { ret void } + define void @stack_fold_vshufi64x2zrmikz_vshufi64x2zrrikz_test() #0 { ret void } + define void @stack_fold_vshufpdzrmikz_vshufpdzrrikz_test() #0 { ret void } + define void @stack_fold_vshufpszrmikz_vshufpszrrikz_test() #0 { ret void } + define void @stack_fold_vsqrtpdzmk_vsqrtpdzrk_test() #0 { ret void } + define void @stack_fold_vsqrtpszmk_vsqrtpszrk_test() #0 { ret void } + define void @stack_fold_vsubpdzrmkz_vsubpdzrrkz_test() #0 { ret void } + define void @stack_fold_vsubpszrmkz_vsubpszrrkz_test() #0 { ret void } + define void @stack_fold_vsubsdzrm_intkz_vsubsdzrr_intkz_test() #0 { ret void } + define void @stack_fold_vsubsszrm_intkz_vsubsszrr_intkz_test() #0 { ret void } + define void @stack_fold_vunpckhpdzrmkz_vunpckhpdzrrkz_test() #0 { ret void } + define void @stack_fold_vunpckhpszrmkz_vunpckhpszrrkz_test() #0 { ret void } + define void @stack_fold_vunpcklpdzrmkz_vunpcklpdzrrkz_test() #0 { ret void } + define void @stack_fold_vunpcklpszrmkz_vunpcklpszrrkz_test() #0 { ret void } + define void @stack_fold_vaddpdzrmk_vaddpdzrrk_test() #0 { ret void } + define void @stack_fold_vaddpszrmk_vaddpszrrk_test() #0 { ret void } + define void @stack_fold_vaddsdzrm_intk_vaddsdzrr_intk_test() #0 { ret void } + define void @stack_fold_vaddsszrm_intk_vaddsszrr_intk_test() #0 { ret void } + define void @stack_fold_valigndzrmik_valigndzrrik_test() #0 { ret void } + define void @stack_fold_valignqzrmik_valignqzrrik_test() #0 { ret void } + define void @stack_fold_vdivpdzrmk_vdivpdzrrk_test() #0 { ret void } + define void @stack_fold_vdivpszrmk_vdivpszrrk_test() #0 { ret void } + define void @stack_fold_vdivsdzrm_intk_vdivsdzrr_intk_test() #0 { ret void } + define void @stack_fold_vdivsszrm_intk_vdivsszrr_intk_test() #0 { ret void } + define void @stack_fold_vfixupimmpdzrmbik_vfixupimmpdzrribk_test() #0 { ret void } + define void @stack_fold_vfixupimmpdzrmbikz_vfixupimmpdzrribkz_test() #0 { ret void } + define void @stack_fold_vfixupimmpdzrmik_vfixupimmpdzrrik_test() #0 { ret void } + define void @stack_fold_vfixupimmpdzrmikz_vfixupimmpdzrrikz_test() #0 { ret void } + define void @stack_fold_vfixupimmpszrmbik_vfixupimmpszrribk_test() #0 { ret void } + define void @stack_fold_vfixupimmpszrmbikz_vfixupimmpszrribkz_test() #0 { ret void } + define void @stack_fold_vfixupimmpszrmik_vfixupimmpszrrik_test() #0 { ret void } + define void @stack_fold_vfixupimmpszrmikz_vfixupimmpszrrikz_test() #0 { ret void } + define void @stack_fold_vfixupimmsdrmik_vfixupimmsdrrik_test() #0 { ret void } + define void @stack_fold_vfixupimmsdrmikz_vfixupimmsdrrikz_test() #0 { ret void } + define void @stack_fold_vfixupimmssrmik_vfixupimmssrrik_test() #0 { ret void } + define void @stack_fold_vfixupimmssrmikz_vfixupimmssrrikz_test() #0 { ret void } + define void @stack_fold_vfmadd132pdzmk_vfmadd132pdzrk_test() #0 { ret void } + define void @stack_fold_vfmadd132pdzmkz_vfmadd132pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmadd132pszmk_vfmadd132pszrk_test() #0 { ret void } + define void @stack_fold_vfmadd132pszmkz_vfmadd132pszrkz_test() #0 { ret void } + define void @stack_fold_vfmadd132sdzm_intk_vfmadd132sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfmadd132sdzm_intkz_vfmadd132sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfmadd132sszm_intk_vfmadd132sszr_intk_test() #0 { ret void } + define void @stack_fold_vfmadd132sszm_intkz_vfmadd132sszr_intkz_test() #0 { ret void } + define void @stack_fold_vfmadd213pdzmk_vfmadd213pdzrk_test() #0 { ret void } + define void @stack_fold_vfmadd213pdzmkz_vfmadd213pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmadd213pszmk_vfmadd213pszrk_test() #0 { ret void } + define void @stack_fold_vfmadd213pszmkz_vfmadd213pszrkz_test() #0 { ret void } + define void @stack_fold_vfmadd213sdzm_intk_vfmadd213sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfmadd213sdzm_intkz_vfmadd213sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfmadd213sszm_intk_vfmadd213sszr_intk_test() #0 { ret void } + define void @stack_fold_vfmadd213sszm_intkz_vfmadd213sszr_intkz_test() #0 { ret void } + define void @stack_fold_vfmadd231pdzmk_vfmadd231pdzrk_test() #0 { ret void } + define void @stack_fold_vfmadd231pdzmkz_vfmadd231pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmadd231pszmk_vfmadd231pszrk_test() #0 { ret void } + define void @stack_fold_vfmadd231pszmkz_vfmadd231pszrkz_test() #0 { ret void } + define void @stack_fold_vfmadd231sdzm_intk_vfmadd231sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfmadd231sdzm_intkz_vfmadd231sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfmadd231sszm_intk_vfmadd231sszr_intk_test() #0 { ret void } + define void @stack_fold_vfmadd231sszm_intkz_vfmadd231sszr_intkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pdzmk_vfmaddsub132pdzrk_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pdzmkz_vfmaddsub132pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pszmk_vfmaddsub132pszrk_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pszmkz_vfmaddsub132pszrkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pdzmk_vfmaddsub213pdzrk_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pdzmkz_vfmaddsub213pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pszmk_vfmaddsub213pszrk_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pszmkz_vfmaddsub213pszrkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pdzmk_vfmaddsub231pdzrk_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pdzmkz_vfmaddsub231pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pszmk_vfmaddsub231pszrk_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pszmkz_vfmaddsub231pszrkz_test() #0 { ret void } + define void @stack_fold_vfmsub132pdzmk_vfmsub132pdzrk_test() #0 { ret void } + define void @stack_fold_vfmsub132pdzmkz_vfmsub132pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmsub132pszmk_vfmsub132pszrk_test() #0 { ret void } + define void @stack_fold_vfmsub132pszmkz_vfmsub132pszrkz_test() #0 { ret void } + define void @stack_fold_vfmsub132sdzm_intk_vfmsub132sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfmsub132sdzm_intkz_vfmsub132sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfmsub132sszm_intk_vfmsub132sszr_intk_test() #0 { ret void } + define void @stack_fold_vfmsub132sszm_intkz_vfmsub132sszr_intkz_test() #0 { ret void } + define void @stack_fold_vfmsub213pdzmk_vfmsub213pdzrk_test() #0 { ret void } + define void @stack_fold_vfmsub213pdzmkz_vfmsub213pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmsub213pszmk_vfmsub213pszrk_test() #0 { ret void } + define void @stack_fold_vfmsub213pszmkz_vfmsub213pszrkz_test() #0 { ret void } + define void @stack_fold_vfmsub213sdzm_intk_vfmsub213sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfmsub213sdzm_intkz_vfmsub213sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfmsub213sszm_intk_vfmsub213sszr_intk_test() #0 { ret void } + define void @stack_fold_vfmsub213sszm_intkz_vfmsub213sszr_intkz_test() #0 { ret void } + define void @stack_fold_vfmsub231pdzmk_vfmsub231pdzrk_test() #0 { ret void } + define void @stack_fold_vfmsub231pdzmkz_vfmsub231pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmsub231pszmk_vfmsub231pszrk_test() #0 { ret void } + define void @stack_fold_vfmsub231pszmkz_vfmsub231pszrkz_test() #0 { ret void } + define void @stack_fold_vfmsub231sdzm_intk_vfmsub231sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfmsub231sdzm_intkz_vfmsub231sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfmsub231sszm_intk_vfmsub231sszr_intk_test() #0 { ret void } + define void @stack_fold_vfmsub231sszm_intkz_vfmsub231sszr_intkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pdzmk_vfmsubadd132pdzrk_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pdzmkz_vfmsubadd132pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pszmk_vfmsubadd132pszrk_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pszmkz_vfmsubadd132pszrkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pdzmk_vfmsubadd213pdzrk_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pdzmkz_vfmsubadd213pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pszmk_vfmsubadd213pszrk_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pszmkz_vfmsubadd213pszrkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pdzmk_vfmsubadd231pdzrk_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pdzmkz_vfmsubadd231pdzrkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pszmk_vfmsubadd231pszrk_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pszmkz_vfmsubadd231pszrkz_test() #0 { ret void } + define void @stack_fold_vfnmadd132pdzmk_vfnmadd132pdzrk_test() #0 { ret void } + define void @stack_fold_vfnmadd132pdzmkz_vfnmadd132pdzrkz_test() #0 { ret void } + define void @stack_fold_vfnmadd132pszmk_vfnmadd132pszrk_test() #0 { ret void } + define void @stack_fold_vfnmadd132pszmkz_vfnmadd132pszrkz_test() #0 { ret void } + define void @stack_fold_vfnmadd132sdzm_intk_vfnmadd132sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfnmadd132sdzm_intkz_vfnmadd132sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfnmadd132sszm_intk_vfnmadd132sszr_intk_test() #0 { ret void } + define void @stack_fold_vfnmadd132sszm_intkz_vfnmadd132sszr_intkz_test() #0 { ret void } + define void @stack_fold_vfnmadd213pdzmk_vfnmadd213pdzrk_test() #0 { ret void } + define void @stack_fold_vfnmadd213pdzmkz_vfnmadd213pdzrkz_test() #0 { ret void } + define void @stack_fold_vfnmadd213pszmk_vfnmadd213pszrk_test() #0 { ret void } + define void @stack_fold_vfnmadd213pszmkz_vfnmadd213pszrkz_test() #0 { ret void } + define void @stack_fold_vfnmadd213sdzm_intk_vfnmadd213sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfnmadd213sdzm_intkz_vfnmadd213sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfnmadd213sszm_intk_vfnmadd213sszr_intk_test() #0 { ret void } + define void @stack_fold_vfnmadd213sszm_intkz_vfnmadd213sszr_intkz_test() #0 { ret void } + define void @stack_fold_vfnmadd231pdzmk_vfnmadd231pdzrk_test() #0 { ret void } + define void @stack_fold_vfnmadd231pdzmkz_vfnmadd231pdzrkz_test() #0 { ret void } + define void @stack_fold_vfnmadd231pszmk_vfnmadd231pszrk_test() #0 { ret void } + define void @stack_fold_vfnmadd231pszmkz_vfnmadd231pszrkz_test() #0 { ret void } + define void @stack_fold_vfnmadd231sdzm_intk_vfnmadd231sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfnmadd231sdzm_intkz_vfnmadd231sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfnmadd231sszm_intk_vfnmadd231sszr_intk_test() #0 { ret void } + define void @stack_fold_vfnmadd231sszm_intkz_vfnmadd231sszr_intkz_test() #0 { ret void } + define void @stack_fold_vfnmsub132pdzmk_vfnmsub132pdzrk_test() #0 { ret void } + define void @stack_fold_vfnmsub132pdzmkz_vfnmsub132pdzrkz_test() #0 { ret void } + define void @stack_fold_vfnmsub132pszmk_vfnmsub132pszrk_test() #0 { ret void } + define void @stack_fold_vfnmsub132pszmkz_vfnmsub132pszrkz_test() #0 { ret void } + define void @stack_fold_vfnmsub132sdzm_intk_vfnmsub132sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfnmsub132sdzm_intkz_vfnmsub132sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfnmsub132sszm_intk_vfnmsub132sszr_intk_test() #0 { ret void } + define void @stack_fold_vfnmsub132sszm_intkz_vfnmsub132sszr_intkz_test() #0 { ret void } + define void @stack_fold_vfnmsub213pdzmk_vfnmsub213pdzrk_test() #0 { ret void } + define void @stack_fold_vfnmsub213pdzmkz_vfnmsub213pdzrkz_test() #0 { ret void } + define void @stack_fold_vfnmsub213pszmk_vfnmsub213pszrk_test() #0 { ret void } + define void @stack_fold_vfnmsub213pszmkz_vfnmsub213pszrkz_test() #0 { ret void } + define void @stack_fold_vfnmsub213sdzm_intk_vfnmsub213sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfnmsub213sdzm_intkz_vfnmsub213sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfnmsub213sszm_intk_vfnmsub213sszr_intk_test() #0 { ret void } + define void @stack_fold_vfnmsub213sszm_intkz_vfnmsub213sszr_intkz_test() #0 { ret void } + define void @stack_fold_vfnmsub231pdzmk_vfnmsub231pdzrk_test() #0 { ret void } + define void @stack_fold_vfnmsub231pdzmkz_vfnmsub231pdzrkz_test() #0 { ret void } + define void @stack_fold_vfnmsub231pszmk_vfnmsub231pszrk_test() #0 { ret void } + define void @stack_fold_vfnmsub231pszmkz_vfnmsub231pszrkz_test() #0 { ret void } + define void @stack_fold_vfnmsub231sdzm_intk_vfnmsub231sdzr_intk_test() #0 { ret void } + define void @stack_fold_vfnmsub231sdzm_intkz_vfnmsub231sdzr_intkz_test() #0 { ret void } + define void @stack_fold_vfnmsub231sszm_intk_vfnmsub231sszr_intk_test() #0 { ret void } + define void @stack_fold_vfnmsub231sszm_intkz_vfnmsub231sszr_intkz_test() #0 { ret void } + define void @stack_fold_vgetexpsdmk_vgetexpsdrk_test() #0 { ret void } + define void @stack_fold_vgetexpssmk_vgetexpssrk_test() #0 { ret void } + define void @stack_fold_vgetmantsdz128rmik_vgetmantsdz128rrik_test() #0 { ret void } + define void @stack_fold_vgetmantssz128rmik_vgetmantssz128rrik_test() #0 { ret void } + define void @stack_fold_vinsertf32x4zrmk_vinsertf32x4zrrk_test() #0 { ret void } + define void @stack_fold_vinsertf64x4zrmk_vinsertf64x4zrrk_test() #0 { ret void } + define void @stack_fold_vinserti32x4zrmk_vinserti32x4zrrk_test() #0 { ret void } + define void @stack_fold_vinserti64x4zrmk_vinserti64x4zrrk_test() #0 { ret void } + define void @stack_fold_vmaxcpdzrmbk_vmaxpdzrbk_test() #0 { ret void } + define void @stack_fold_vmaxcpdzrmk_vmaxcpdzrrk_test() #0 { ret void } + define void @stack_fold_vmaxcpszrmbk_vmaxpszrbk_test() #0 { ret void } + define void @stack_fold_vmaxcpszrmk_vmaxcpszrrk_test() #0 { ret void } + define void @stack_fold_vmaxpdzrmk_vmaxpdzrrk_test() #0 { ret void } + define void @stack_fold_vmaxpszrmk_vmaxpszrrk_test() #0 { ret void } + define void @stack_fold_vmaxsdzrm_intk_vmaxsdzrr_intk_test() #0 { ret void } + define void @stack_fold_vmaxsszrm_intk_vmaxsszrr_intk_test() #0 { ret void } + define void @stack_fold_vmincpdzrmbk_vminpdzrbk_test() #0 { ret void } + define void @stack_fold_vmincpdzrmk_vmincpdzrrk_test() #0 { ret void } + define void @stack_fold_vmincpszrmbk_vminpszrbk_test() #0 { ret void } + define void @stack_fold_vmincpszrmk_vmincpszrrk_test() #0 { ret void } + define void @stack_fold_vminpdzrmk_vminpdzrrk_test() #0 { ret void } + define void @stack_fold_vminpszrmk_vminpszrrk_test() #0 { ret void } + define void @stack_fold_vminsdzrm_intk_vminsdzrr_intk_test() #0 { ret void } + define void @stack_fold_vminsszrm_intk_vminsszrr_intk_test() #0 { ret void } + define void @stack_fold_vmulpdzrmk_vmulpdzrrk_test() #0 { ret void } + define void @stack_fold_vmulpszrmk_vmulpszrrk_test() #0 { ret void } + define void @stack_fold_vmulsdzrm_intk_vmulsdzrr_intk_test() #0 { ret void } + define void @stack_fold_vmulsszrm_intk_vmulsszrr_intk_test() #0 { ret void } + define void @stack_fold_vpadddzrmk_vpadddzrrk_test() #0 { ret void } + define void @stack_fold_vpaddqzrmk_vpaddqzrrk_test() #0 { ret void } + define void @stack_fold_vpanddzrmk_vpanddzrrk_test() #0 { ret void } + define void @stack_fold_vpandndzrmk_vpandndzrrk_test() #0 { ret void } + define void @stack_fold_vpandnqzrmk_vpandnqzrrk_test() #0 { ret void } + define void @stack_fold_vpandqzrmk_vpandqzrrk_test() #0 { ret void } + define void @stack_fold_vpermdzrmk_vpermdzrrk_test() #0 { ret void } + define void @stack_fold_vpermi2drmk_vpermi2drrk_test() #0 { ret void } + define void @stack_fold_vpermi2drmkz_vpermi2drrkz_test() #0 { ret void } + define void @stack_fold_vpermi2pdrmk_vpermi2pdrrk_test() #0 { ret void } + define void @stack_fold_vpermi2pdrmkz_vpermi2pdrrkz_test() #0 { ret void } + define void @stack_fold_vpermi2psrmk_vpermi2psrrk_test() #0 { ret void } + define void @stack_fold_vpermi2psrmkz_vpermi2psrrkz_test() #0 { ret void } + define void @stack_fold_vpermi2qrmk_vpermi2qrrk_test() #0 { ret void } + define void @stack_fold_vpermi2qrmkz_vpermi2qrrkz_test() #0 { ret void } + define void @stack_fold_vpermilpdzrmk_vpermilpdzrrk_test() #0 { ret void } + define void @stack_fold_vpermilpszrmk_vpermilpszrrk_test() #0 { ret void } + define void @stack_fold_vpermpdzrmk_vpermpdzrrk_test() #0 { ret void } + define void @stack_fold_vpermpszrmk_vpermpszrrk_test() #0 { ret void } + define void @stack_fold_vpermqzrmk_vpermqzrrk_test() #0 { ret void } + define void @stack_fold_vpermt2drmk_vpermt2drrk_test() #0 { ret void } + define void @stack_fold_vpermt2drmkz_vpermt2drrkz_test() #0 { ret void } + define void @stack_fold_vpermt2pdrmk_vpermt2pdrrk_test() #0 { ret void } + define void @stack_fold_vpermt2pdrmkz_vpermt2pdrrkz_test() #0 { ret void } + define void @stack_fold_vpermt2psrmk_vpermt2psrrk_test() #0 { ret void } + define void @stack_fold_vpermt2psrmkz_vpermt2psrrkz_test() #0 { ret void } + define void @stack_fold_vpermt2qrmk_vpermt2qrrk_test() #0 { ret void } + define void @stack_fold_vpermt2qrmkz_vpermt2qrrkz_test() #0 { ret void } + define void @stack_fold_vpmaxsdzrmk_vpmaxsdzrrk_test() #0 { ret void } + define void @stack_fold_vpmaxsqzrmk_vpmaxsqzrrk_test() #0 { ret void } + define void @stack_fold_vpmaxudzrmk_vpmaxudzrrk_test() #0 { ret void } + define void @stack_fold_vpmaxuqzrmk_vpmaxuqzrrk_test() #0 { ret void } + define void @stack_fold_vpminsdzrmk_vpminsdzrrk_test() #0 { ret void } + define void @stack_fold_vpminsqzrmk_vpminsqzrrk_test() #0 { ret void } + define void @stack_fold_vpminudzrmk_vpminudzrrk_test() #0 { ret void } + define void @stack_fold_vpminuqzrmk_vpminuqzrrk_test() #0 { ret void } + define void @stack_fold_vpmuldqzrmk_vpmuldqzrrk_test() #0 { ret void } + define void @stack_fold_vpmulldzrmk_vpmulldzrrk_test() #0 { ret void } + define void @stack_fold_vpmuludqzrmk_vpmuludqzrrk_test() #0 { ret void } + define void @stack_fold_vpordzrmk_vpordzrrk_test() #0 { ret void } + define void @stack_fold_vporqzrmk_vporqzrrk_test() #0 { ret void } + define void @stack_fold_vprolvdzrmk_vprolvdzrrk_test() #0 { ret void } + define void @stack_fold_vprolvqzrmk_vprolvqzrrk_test() #0 { ret void } + define void @stack_fold_vprorvdzrmk_vprorvdzrrk_test() #0 { ret void } + define void @stack_fold_vprorvqzrmk_vprorvqzrrk_test() #0 { ret void } + define void @stack_fold_vpslldzrmk_vpslldzrrk_test() #0 { ret void } + define void @stack_fold_vpsllqzrmk_vpsllqzrrk_test() #0 { ret void } + define void @stack_fold_vpsllvdzrmk_vpsllvdzrrk_test() #0 { ret void } + define void @stack_fold_vpsllvqzrmk_vpsllvqzrrk_test() #0 { ret void } + define void @stack_fold_vpsradzrmk_vpsradzrrk_test() #0 { ret void } + define void @stack_fold_vpsraqzrmk_vpsraqzrrk_test() #0 { ret void } + define void @stack_fold_vpsravdzrmk_vpsravdzrrk_test() #0 { ret void } + define void @stack_fold_vpsravqzrmk_vpsravqzrrk_test() #0 { ret void } + define void @stack_fold_vpsrldzrmk_vpsrldzrrk_test() #0 { ret void } + define void @stack_fold_vpsrlqzrmk_vpsrlqzrrk_test() #0 { ret void } + define void @stack_fold_vpsrlvdzrmk_vpsrlvdzrrk_test() #0 { ret void } + define void @stack_fold_vpsrlvqzrmk_vpsrlvqzrrk_test() #0 { ret void } + define void @stack_fold_vpsubdzrmk_vpsubdzrrk_test() #0 { ret void } + define void @stack_fold_vpsubqzrmk_vpsubqzrrk_test() #0 { ret void } + define void @stack_fold_vpternlogdzrmik_vpternlogdzrrik_test() #0 { ret void } + define void @stack_fold_vpternlogdzrmikz_vpternlogdzrrikz_test() #0 { ret void } + define void @stack_fold_vpternlogqzrmik_vpternlogqzrrik_test() #0 { ret void } + define void @stack_fold_vpternlogqzrmikz_vpternlogqzrrikz_test() #0 { ret void } + define void @stack_fold_vpunpckhdqzrmk_vpunpckhdqzrrk_test() #0 { ret void } + define void @stack_fold_vpunpckhqdqzrmk_vpunpckhqdqzrrk_test() #0 { ret void } + define void @stack_fold_vpunpckldqzrmk_vpunpckldqzrrk_test() #0 { ret void } + define void @stack_fold_vpunpcklqdqzrmk_vpunpcklqdqzrrk_test() #0 { ret void } + define void @stack_fold_vpxordzrmk_vpxordzrrk_test() #0 { ret void } + define void @stack_fold_vpxorqzrmk_vpxorqzrrk_test() #0 { ret void } + define void @stack_fold_vrcp14sdrmk_vrcp14sdrrk_test() #0 { ret void } + define void @stack_fold_vrcp14ssrmk_vrcp14ssrrk_test() #0 { ret void } + define void @stack_fold_vrndscalesdmk_vrndscalesdrk_test() #0 { ret void } + define void @stack_fold_vrndscalessmk_vrndscalessrk_test() #0 { ret void } + define void @stack_fold_vrsqrt14sdrmk_vrsqrt14sdrrk_test() #0 { ret void } + define void @stack_fold_vrsqrt14ssrmk_vrsqrt14ssrrk_test() #0 { ret void } + define void @stack_fold_vscalefpdzrmk_vscalefpdzrrk_test() #0 { ret void } + define void @stack_fold_vscalefpszrmk_vscalefpszrrk_test() #0 { ret void } + define void @stack_fold_vscalefsdz128rmk_vscalefsdz128rrk_test() #0 { ret void } + define void @stack_fold_vscalefssz128rmk_vscalefssz128rrk_test() #0 { ret void } + define void @stack_fold_vshuff32x4zrmik_vshuff32x4zrrik_test() #0 { ret void } + define void @stack_fold_vshuff64x2zrmik_vshuff64x2zrrik_test() #0 { ret void } + define void @stack_fold_vshufi32x4zrmik_vshufi32x4zrrik_test() #0 { ret void } + define void @stack_fold_vshufi64x2zrmik_vshufi64x2zrrik_test() #0 { ret void } + define void @stack_fold_vshufpdzrmik_vshufpdzrrik_test() #0 { ret void } + define void @stack_fold_vshufpszrmik_vshufpszrrik_test() #0 { ret void } + define void @stack_fold_vsubpdzrmk_vsubpdzrrk_test() #0 { ret void } + define void @stack_fold_vsubpszrmk_vsubpszrrk_test() #0 { ret void } + define void @stack_fold_vsubsdzrm_intk_vsubsdzrr_intk_test() #0 { ret void } + define void @stack_fold_vsubsszrm_intk_vsubsszrr_intk_test() #0 { ret void } + define void @stack_fold_vunpckhpdzrmk_vunpckhpdzrrk_test() #0 { ret void } + define void @stack_fold_vunpckhpszrmk_vunpckhpszrrk_test() #0 { ret void } + define void @stack_fold_vunpcklpdzrmk_vunpcklpdzrrk_test() #0 { ret void } + define void @stack_fold_vunpcklpszrmk_vunpcklpszrrk_test() #0 { ret void } +... +--- +name: stack_fold_vcompresspdzmr_vcompresspdzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vcompresspdzmr_vcompresspdzrr_test + ; CHECK: VCOMPRESSPDZmr + %0 = VCOMPRESSPDZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vcompresspszmr_vcompresspszrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vcompresspszmr_vcompresspszrr_test + ; CHECK: VCOMPRESSPSZmr + %0 = VCOMPRESSPSZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vcvtps2phzmr_vcvtps2phzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vcvtps2phzmr_vcvtps2phzrr_test + ; CHECK: VCVTPS2PHZmr + %0 = VCVTPS2PHZrr undef %zmm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextractf32x4zmr_vextractf32x4zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextractf32x4zmr_vextractf32x4zrr_test + ; CHECK: VEXTRACTF32x4Zmr + %0 = VEXTRACTF32x4Zrr undef %zmm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextractf64x4zmr_vextractf64x4zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextractf64x4zmr_vextractf64x4zrr_test + ; CHECK: VEXTRACTF64x4Zmr + %0 = VEXTRACTF64x4Zrr undef %zmm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextracti32x4zmr_vextracti32x4zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextracti32x4zmr_vextracti32x4zrr_test + ; CHECK: VEXTRACTI32x4Zmr + %0 = VEXTRACTI32x4Zrr undef %zmm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextracti64x4zmr_vextracti64x4zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextracti64x4zmr_vextracti64x4zrr_test + ; CHECK: VEXTRACTI64x4Zmr + %0 = VEXTRACTI64x4Zrr undef %zmm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextractpszmr_vextractpszrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextractpszmr_vextractpszrr_test + ; CHECK: VEXTRACTPSZmr + %0 = VEXTRACTPSZrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovapdzmr_vmovapdzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovapdzmr_vmovapdzrr_test + ; CHECK: VMOVAPDZmr + %0 = VMOVAPDZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovapszmr_vmovapszrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovapszmr_vmovapszrr_test + ; CHECK: VMOVAPSZmr + %0 = VMOVAPSZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqa32zmr_vmovdqa32zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqa32zmr_vmovdqa32zrr_test + ; CHECK: VMOVDQA32Zmr + %0 = VMOVDQA32Zrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqa64zmr_vmovdqa64zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqa64zmr_vmovdqa64zrr_test + ; CHECK: VMOVDQA64Zmr + %0 = VMOVDQA64Zrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu32zmr_vmovdqu32zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu32zmr_vmovdqu32zrr_test + ; CHECK: VMOVDQU32Zmr + %0 = VMOVDQU32Zrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu64zmr_vmovdqu64zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu64zmr_vmovdqu64zrr_test + ; CHECK: VMOVDQU64Zmr + %0 = VMOVDQU64Zrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovpdi2dizmr_vmovpdi2dizrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovpdi2dizmr_vmovpdi2dizrr_test + ; CHECK: VMOVPDI2DIZmr + %0 = VMOVPDI2DIZrr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovpqi2qizmr_vmovpqi2qizrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovpqi2qizmr_vmovpqi2qizrr_test + ; CHECK: VMOVPQI2QIZmr + %0 = VMOVPQI2QIZrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovpqito64zmr_vmovpqito64zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovpqito64zmr_vmovpqito64zrr_test + ; CHECK: VMOVPQIto64Zmr + %0 = VMOVPQIto64Zrr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovsdto64zmr_vmovsdto64zrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovsdto64zmr_vmovsdto64zrr_test + ; CHECK: VMOVSDto64Zmr + %0 = VMOVSDto64Zrr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovss2dizmr_vmovss2dizrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovss2dizmr_vmovss2dizrr_test + ; CHECK: VMOVSS2DIZmr + %0 = VMOVSS2DIZrr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovupdzmr_vmovupdzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovupdzmr_vmovupdzrr_test + ; CHECK: VMOVUPDZmr + %0 = VMOVUPDZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovupszmr_vmovupszrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovupszmr_vmovupszrr_test + ; CHECK: VMOVUPSZmr + %0 = VMOVUPSZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpcompressdzmr_vpcompressdzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpcompressdzmr_vpcompressdzrr_test + ; CHECK: VPCOMPRESSDZmr + %0 = VPCOMPRESSDZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpcompressqzmr_vpcompressqzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr512 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 64, alignment: 64 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpcompressqzmr_vpcompressqzrr_test + ; CHECK: VPCOMPRESSQZmr + %0 = VPCOMPRESSQZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovdbzmr_vpmovdbzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovdbzmr_vpmovdbzrr_test + ; CHECK: VPMOVDBZmr + %0 = VPMOVDBZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovdwzmr_vpmovdwzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovdwzmr_vpmovdwzrr_test + ; CHECK: VPMOVDWZmr + %0 = VPMOVDWZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovqbzmr_vpmovqbzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovqbzmr_vpmovqbzrr_test + ; CHECK: VPMOVQBZmr + %0 = VPMOVQBZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovqdzmr_vpmovqdzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovqdzmr_vpmovqdzrr_test + ; CHECK: VPMOVQDZmr + %0 = VPMOVQDZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovqwzmr_vpmovqwzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovqwzmr_vpmovqwzrr_test + ; CHECK: VPMOVQWZmr + %0 = VPMOVQWZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsdbzmr_vpmovsdbzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsdbzmr_vpmovsdbzrr_test + ; CHECK: VPMOVSDBZmr + %0 = VPMOVSDBZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsdwzmr_vpmovsdwzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsdwzmr_vpmovsdwzrr_test + ; CHECK: VPMOVSDWZmr + %0 = VPMOVSDWZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsqbzmr_vpmovsqbzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsqbzmr_vpmovsqbzrr_test + ; CHECK: VPMOVSQBZmr + %0 = VPMOVSQBZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsqdzmr_vpmovsqdzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsqdzmr_vpmovsqdzrr_test + ; CHECK: VPMOVSQDZmr + %0 = VPMOVSQDZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsqwzmr_vpmovsqwzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsqwzmr_vpmovsqwzrr_test + ; CHECK: VPMOVSQWZmr + %0 = VPMOVSQWZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusdbzmr_vpmovusdbzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusdbzmr_vpmovusdbzrr_test + ; CHECK: VPMOVUSDBZmr + %0 = VPMOVUSDBZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusdwzmr_vpmovusdwzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusdwzmr_vpmovusdwzrr_test + ; CHECK: VPMOVUSDWZmr + %0 = VPMOVUSDWZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusqbzmr_vpmovusqbzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusqbzmr_vpmovusqbzrr_test + ; CHECK: VPMOVUSQBZmr + %0 = VPMOVUSQBZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusqdzmr_vpmovusqdzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusqdzmr_vpmovusqdzrr_test + ; CHECK: VPMOVUSQDZmr + %0 = VPMOVUSQDZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusqwzmr_vpmovusqwzrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusqwzmr_vpmovusqwzrr_test + ; CHECK: VPMOVUSQWZmr + %0 = VPMOVUSQWZrr undef %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_int_vcomisdzrm_int_vcomisdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_vcomisdzrm_int_vcomisdzrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCOMISDZrm + Int_VCOMISDZrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_int_vcomisszrm_int_vcomisszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_vcomisszrm_int_vcomisszrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VCOMISSZrm + Int_VCOMISSZrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_int_vucomisdzrm_int_vucomisdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_vucomisdzrm_int_vucomisdzrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VUCOMISDZrm + Int_VUCOMISDZrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_int_vucomisszrm_int_vucomisszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_vucomisszrm_int_vucomisszrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_VUCOMISSZrm + Int_VUCOMISSZrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_kmovwkm_kmovwkk_test +tracksRegLiveness: true +registers: + - { id: 1, class: vk16 } +liveins: + - { reg: '%k2', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %k2 + + ; CHECK-LABEL: name: stack_fold_kmovwkm_kmovwkk_test + %1 = COPY %k2 + INLINEASM $nop, 1, 12, implicit-def %k0, 12, implicit-def %k1, 12, implicit-def %k2, 12, implicit-def %k3, 12, implicit-def %k4, 12, implicit-def %k5, 12, implicit-def %k6, 12, implicit-def %k7 + ; CHECK: KMOVWkm + %k1 = KMOVWkk %1 + RET 0 +... +--- +name: stack_fold_vbroadcastsdzm_vbroadcastsdzr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastsdzm_vbroadcastsdzr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSDZm + %zmm0 = VBROADCASTSDZr %1 + RET 0 +... +--- +name: stack_fold_vbroadcastsszm_vbroadcastsszr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastsszm_vbroadcastsszr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSSZm + %zmm0 = VBROADCASTSSZr %1 + RET 0 +... +--- +name: stack_fold_vcomisdzrm_vcomisdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcomisdzrm_vcomisdzrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCOMISDZrm + VCOMISDZrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vcomisszrm_vcomisszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcomisszrm_vcomisszrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCOMISSZrm + VCOMISSZrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vcvtdq2pdzrm_vcvtdq2pdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pdzrm_vcvtdq2pdzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PDZrm + %zmm0 = VCVTDQ2PDZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtdq2pszrm_vcvtdq2pszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pszrm_vcvtdq2pszrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PSZrm + %zmm0 = VCVTDQ2PSZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2dqzrm_vcvtpd2dqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2dqzrm_vcvtpd2dqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2DQZrm + %ymm0 = VCVTPD2DQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2pszrm_vcvtpd2pszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2pszrm_vcvtpd2pszrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2PSZrm + %ymm0 = VCVTPD2PSZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2udqzrm_vcvtpd2udqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2udqzrm_vcvtpd2udqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UDQZrm + %ymm0 = VCVTPD2UDQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtph2pszrm_vcvtph2pszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtph2pszrm_vcvtph2pszrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPH2PSZrm + %zmm0 = VCVTPH2PSZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2dqzrm_vcvtps2dqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2dqzrm_vcvtps2dqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2DQZrm + %zmm0 = VCVTPS2DQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2pdzrm_vcvtps2pdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdzrm_vcvtps2pdzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZrm + %zmm0 = VCVTPS2PDZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2pdzrmb_vcvtps2pdzrrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdzrmb_vcvtps2pdzrrb_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZrmb + %zmm0 = VCVTPS2PDZrrb %1 + RET 0 +... +--- +name: stack_fold_vcvtps2udqzrm_vcvtps2udqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2udqzrm_vcvtps2udqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UDQZrm + %zmm0 = VCVTPS2UDQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtsd2si64zrm_vcvtsd2si64zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtsd2si64zrm_vcvtsd2si64zrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSD2SI64Zrm + %rax = VCVTSD2SI64Zrr %1 + RET 0 +... +--- +name: stack_fold_vcvtsd2sizrm_vcvtsd2sizrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtsd2sizrm_vcvtsd2sizrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSD2SIZrm + %eax = VCVTSD2SIZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtsd2usi64zrm_vcvtsd2usi64zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtsd2usi64zrm_vcvtsd2usi64zrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSD2USI64Zrm + %rax = VCVTSD2USI64Zrr %1 + RET 0 +... +--- +name: stack_fold_vcvtsd2usizrm_vcvtsd2usizrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtsd2usizrm_vcvtsd2usizrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSD2USIZrm + %eax = VCVTSD2USIZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtss2si64zrm_vcvtss2si64zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtss2si64zrm_vcvtss2si64zrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSS2SI64Zrm + %rax = VCVTSS2SI64Zrr %1 + RET 0 +... +--- +name: stack_fold_vcvtss2sizrm_vcvtss2sizrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtss2sizrm_vcvtss2sizrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSS2SIZrm + %eax = VCVTSS2SIZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtss2usi64zrm_vcvtss2usi64zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtss2usi64zrm_vcvtss2usi64zrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSS2USI64Zrm + %rax = VCVTSS2USI64Zrr %1 + RET 0 +... +--- +name: stack_fold_vcvtss2usizrm_vcvtss2usizrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvtss2usizrm_vcvtss2usizrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTSS2USIZrm + %eax = VCVTSS2USIZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqzrm_vcvttpd2dqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqzrm_vcvttpd2dqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZrm + %ymm0 = VCVTTPD2DQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqzrmb_vcvttpd2dqzrrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqzrmb_vcvttpd2dqzrrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZrmb + %ymm0 = VCVTTPD2DQZrrb %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqzrm_vcvttpd2udqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqzrm_vcvttpd2udqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZrm + %ymm0 = VCVTTPD2UDQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqzrmb_vcvttpd2udqzrrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqzrmb_vcvttpd2udqzrrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZrmb + %ymm0 = VCVTTPD2UDQZrrb %1 + RET 0 +... +--- +name: stack_fold_vcvttps2dqzrm_vcvttps2dqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqzrm_vcvttps2dqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZrm + %zmm0 = VCVTTPS2DQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2dqzrmb_vcvttps2dqzrrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqzrmb_vcvttps2dqzrrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZrmb + %zmm0 = VCVTTPS2DQZrrb %1 + RET 0 +... +--- +name: stack_fold_vcvttps2udqzrm_vcvttps2udqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqzrm_vcvttps2udqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZrm + %zmm0 = VCVTTPS2UDQZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2udqzrmb_vcvttps2udqzrrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqzrmb_vcvttps2udqzrrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZrmb + %zmm0 = VCVTTPS2UDQZrrb %1 + RET 0 +... +--- +name: stack_fold_vcvttsd2si64zrm_vcvttsd2si64zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttsd2si64zrm_vcvttsd2si64zrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSD2SI64Zrm + %rax = VCVTTSD2SI64Zrr %1 + RET 0 +... +--- +name: stack_fold_vcvttsd2si64zrm_int_vcvttsd2si64zrr_int_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttsd2si64zrm_int_vcvttsd2si64zrr_int_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSD2SI64Zrm_Int + %rax = VCVTTSD2SI64Zrr_Int %1 + RET 0 +... +--- +name: stack_fold_vcvttsd2sizrm_vcvttsd2sizrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttsd2sizrm_vcvttsd2sizrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSD2SIZrm + %eax = VCVTTSD2SIZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttsd2sizrm_int_vcvttsd2sizrr_int_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttsd2sizrm_int_vcvttsd2sizrr_int_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSD2SIZrm_Int + %eax = VCVTTSD2SIZrr_Int %1 + RET 0 +... +--- +name: stack_fold_vcvttsd2usi64zrm_vcvttsd2usi64zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttsd2usi64zrm_vcvttsd2usi64zrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSD2USI64Zrm + %rax = VCVTTSD2USI64Zrr %1 + RET 0 +... +--- +name: stack_fold_vcvttsd2usi64zrm_int_vcvttsd2usi64zrr_int_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttsd2usi64zrm_int_vcvttsd2usi64zrr_int_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSD2USI64Zrm_Int + %rax = VCVTTSD2USI64Zrr_Int %1 + RET 0 +... +--- +name: stack_fold_vcvttsd2usizrm_vcvttsd2usizrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttsd2usizrm_vcvttsd2usizrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSD2USIZrm + %eax = VCVTTSD2USIZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttsd2usizrm_int_vcvttsd2usizrr_int_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttsd2usizrm_int_vcvttsd2usizrr_int_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSD2USIZrm_Int + %eax = VCVTTSD2USIZrr_Int %1 + RET 0 +... +--- +name: stack_fold_vcvttss2si64zrm_vcvttss2si64zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttss2si64zrm_vcvttss2si64zrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSS2SI64Zrm + %rax = VCVTTSS2SI64Zrr %1 + RET 0 +... +--- +name: stack_fold_vcvttss2si64zrm_int_vcvttss2si64zrr_int_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttss2si64zrm_int_vcvttss2si64zrr_int_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSS2SI64Zrm_Int + %rax = VCVTTSS2SI64Zrr_Int %1 + RET 0 +... +--- +name: stack_fold_vcvttss2sizrm_vcvttss2sizrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttss2sizrm_vcvttss2sizrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSS2SIZrm + %eax = VCVTTSS2SIZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttss2sizrm_int_vcvttss2sizrr_int_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttss2sizrm_int_vcvttss2sizrr_int_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSS2SIZrm_Int + %eax = VCVTTSS2SIZrr_Int %1 + RET 0 +... +--- +name: stack_fold_vcvttss2usi64zrm_vcvttss2usi64zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttss2usi64zrm_vcvttss2usi64zrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSS2USI64Zrm + %rax = VCVTTSS2USI64Zrr %1 + RET 0 +... +--- +name: stack_fold_vcvttss2usi64zrm_int_vcvttss2usi64zrr_int_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttss2usi64zrm_int_vcvttss2usi64zrr_int_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSS2USI64Zrm_Int + %rax = VCVTTSS2USI64Zrr_Int %1 + RET 0 +... +--- +name: stack_fold_vcvttss2usizrm_vcvttss2usizrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttss2usizrm_vcvttss2usizrr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSS2USIZrm + %eax = VCVTTSS2USIZrr %1 + RET 0 +... +--- +name: stack_fold_vcvttss2usizrm_int_vcvttss2usizrr_int_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_vcvttss2usizrm_int_vcvttss2usizrr_int_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTSS2USIZrm_Int + %eax = VCVTTSS2USIZrr_Int %1 + RET 0 +... +--- +name: stack_fold_vcvtudq2pdzrm_vcvtudq2pdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pdzrm_vcvtudq2pdzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PDZrm + %zmm0 = VCVTUDQ2PDZrr %1 + RET 0 +... +--- +name: stack_fold_vcvtudq2pszrm_vcvtudq2pszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pszrm_vcvtudq2pszrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PSZrm + %zmm0 = VCVTUDQ2PSZrr %1 + RET 0 +... +--- +name: stack_fold_vexpandpdzrm_vexpandpdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpdzrm_vexpandpdzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPDZrm + %zmm0 = VEXPANDPDZrr %1 + RET 0 +... +--- +name: stack_fold_vexpandpszrm_vexpandpszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpszrm_vexpandpszrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPSZrm + %zmm0 = VEXPANDPSZrr %1 + RET 0 +... +--- +name: stack_fold_vgetexppdm_vgetexppdr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppdm_vgetexppdr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDm + %zmm0 = VGETEXPPDr %1 + RET 0 +... +--- +name: stack_fold_vgetexppdmb_vgetexppdrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppdmb_vgetexppdrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDmb + %zmm0 = VGETEXPPDrb %1 + RET 0 +... +--- +name: stack_fold_vgetexppsm_vgetexppsr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppsm_vgetexppsr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSm + %zmm0 = VGETEXPPSr %1 + RET 0 +... +--- +name: stack_fold_vgetexppsmb_vgetexppsrb_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppsmb_vgetexppsrb_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSmb + %zmm0 = VGETEXPPSrb %1 + RET 0 +... +--- +name: stack_fold_vgetmantpdzrmbi_vgetmantpdzrrib_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdzrmbi_vgetmantpdzrrib_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZrmbi + %zmm0 = VGETMANTPDZrrib %1, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpdzrmi_vgetmantpdzrri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdzrmi_vgetmantpdzrri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZrmi + %zmm0 = VGETMANTPDZrri %1, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpszrmbi_vgetmantpszrrib_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpszrmbi_vgetmantpszrrib_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZrmbi + %zmm0 = VGETMANTPSZrrib %1, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpszrmi_vgetmantpszrri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpszrmi_vgetmantpszrri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZrmi + %zmm0 = VGETMANTPSZrri %1, 0 + RET 0 +... +--- +name: stack_fold_vmov64topqizrm_vmov64topqizrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vmov64topqizrm_vmov64topqizrr_test + %1 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VMOV64toPQIZrm + %xmm0 = VMOV64toPQIZrr %1 + RET 0 +... +--- +name: stack_fold_vmovapdzrm_vmovapdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovapdzrm_vmovapdzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPDZrm + %zmm0 = VMOVAPDZrr %1 + RET 0 +... +--- +name: stack_fold_vmovapszrm_vmovapszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovapszrm_vmovapszrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPSZrm + %zmm0 = VMOVAPSZrr %1 + RET 0 +... +--- +name: stack_fold_vmovddupzrm_vmovddupzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovddupzrm_vmovddupzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDDUPZrm + %zmm0 = VMOVDDUPZrr %1 + RET 0 +... +--- +name: stack_fold_vmovdi2pdizrm_vmovdi2pdizrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vmovdi2pdizrm_vmovdi2pdizrr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VMOVDI2PDIZrm + %xmm0 = VMOVDI2PDIZrr %1 + RET 0 +... +--- +name: stack_fold_vmovdi2sszrm_vmovdi2sszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vmovdi2sszrm_vmovdi2sszrr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VMOVDI2SSZrm + %xmm0 = VMOVDI2SSZrr %1 + RET 0 +... +--- +name: stack_fold_vmovdqa32zrm_vmovdqa32zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa32zrm_vmovdqa32zrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA32Zrm + %zmm0 = VMOVDQA32Zrr %1 + RET 0 +... +--- +name: stack_fold_vmovdqa64zrm_vmovdqa64zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa64zrm_vmovdqa64zrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA64Zrm + %zmm0 = VMOVDQA64Zrr %1 + RET 0 +... +--- +name: stack_fold_vmovdqu32zrm_vmovdqu32zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu32zrm_vmovdqu32zrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU32Zrm + %zmm0 = VMOVDQU32Zrr %1 + RET 0 +... +--- +name: stack_fold_vmovdqu64zrm_vmovdqu64zrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu64zrm_vmovdqu64zrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU64Zrm + %zmm0 = VMOVDQU64Zrr %1 + RET 0 +... +--- +name: stack_fold_vmovqi2pqizrm_vmovzpqilo2pqizrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovqi2pqizrm_vmovzpqilo2pqizrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVQI2PQIZrm + %xmm0 = VMOVZPQILo2PQIZrr %1 + RET 0 +... +--- +name: stack_fold_vmovshdupzrm_vmovshdupzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovshdupzrm_vmovshdupzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSHDUPZrm + %zmm0 = VMOVSHDUPZrr %1 + RET 0 +... +--- +name: stack_fold_vmovsldupzrm_vmovsldupzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovsldupzrm_vmovsldupzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSLDUPZrm + %zmm0 = VMOVSLDUPZrr %1 + RET 0 +... +--- +name: stack_fold_vmovupdzrm_vmovupdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovupdzrm_vmovupdzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPDZrm + %zmm0 = VMOVUPDZrr %1 + RET 0 +... +--- +name: stack_fold_vmovupszrm_vmovupszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovupszrm_vmovupszrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPSZrm + %zmm0 = VMOVUPSZrr %1 + RET 0 +... +--- +name: stack_fold_vpabsdzrm_vpabsdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsdzrm_vpabsdzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSDZrm + %zmm0 = VPABSDZrr %1 + RET 0 +... +--- +name: stack_fold_vpabsqzrm_vpabsqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsqzrm_vpabsqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSQZrm + %zmm0 = VPABSQZrr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastdzm_vpbroadcastdzr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastdzm_vpbroadcastdzr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTDZm + %zmm0 = VPBROADCASTDZr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastqzm_vpbroadcastqzr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastqzm_vpbroadcastqzr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTQZm + %zmm0 = VPBROADCASTQZr %1 + RET 0 +... +--- +name: stack_fold_vpermilpdzmi_vpermilpdzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpdzmi_vpermilpdzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZmi + %zmm0 = VPERMILPDZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermilpszmi_vpermilpszri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpszmi_vpermilpszri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZmi + %zmm0 = VPERMILPSZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermpdzmi_vpermpdzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpermpdzmi_vpermpdzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZmi + %zmm0 = VPERMPDZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermqzmi_vpermqzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpermqzmi_vpermqzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZmi + %zmm0 = VPERMQZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpexpanddzrm_vpexpanddzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpexpanddzrm_vpexpanddzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDDZrm + %zmm0 = VPEXPANDDZrr %1 + RET 0 +... +--- +name: stack_fold_vpexpandqzrm_vpexpandqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpexpandqzrm_vpexpandqzrr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDQZrm + %zmm0 = VPEXPANDQZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbdzrm_vpmovsxbdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbdzrm_vpmovsxbdzrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBDZrm + %zmm0 = VPMOVSXBDZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbqzrm_vpmovsxbqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbqzrm_vpmovsxbqzrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBQZrm + %zmm0 = VPMOVSXBQZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxdqzrm_vpmovsxdqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxdqzrm_vpmovsxdqzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXDQZrm + %zmm0 = VPMOVSXDQZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxwdzrm_vpmovsxwdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwdzrm_vpmovsxwdzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWDZrm + %zmm0 = VPMOVSXWDZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxwqzrm_vpmovsxwqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwqzrm_vpmovsxwqzrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWQZrm + %zmm0 = VPMOVSXWQZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbdzrm_vpmovzxbdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbdzrm_vpmovzxbdzrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBDZrm + %zmm0 = VPMOVZXBDZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbqzrm_vpmovzxbqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbqzrm_vpmovzxbqzrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBQZrm + %zmm0 = VPMOVZXBQZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxdqzrm_vpmovzxdqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxdqzrm_vpmovzxdqzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXDQZrm + %zmm0 = VPMOVZXDQZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxwdzrm_vpmovzxwdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwdzrm_vpmovzxwdzrr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWDZrm + %zmm0 = VPMOVZXWDZrr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxwqzrm_vpmovzxwqzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwqzrm_vpmovzxwqzrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWQZrm + %zmm0 = VPMOVZXWQZrr %1 + RET 0 +... +--- +name: stack_fold_vproldzmi_vproldzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vproldzmi_vproldzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLDZmi + %zmm0 = VPROLDZri %1, 0 + RET 0 +... +--- +name: stack_fold_vprolqzmi_vprolqzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vprolqzmi_vprolqzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLQZmi + %zmm0 = VPROLQZri %1, 0 + RET 0 +... +--- +name: stack_fold_vprordzmi_vprordzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vprordzmi_vprordzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORDZmi + %zmm0 = VPRORDZri %1, 0 + RET 0 +... +--- +name: stack_fold_vprorqzmi_vprorqzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vprorqzmi_vprorqzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORQZmi + %zmm0 = VPRORQZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshufdzmi_vpshufdzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpshufdzmi_vpshufdzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFDZmi + %zmm0 = VPSHUFDZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpslldzmi_vpslldzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpslldzmi_vpslldzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZmi + %zmm0 = VPSLLDZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsllqzmi_vpsllqzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsllqzmi_vpsllqzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZmi + %zmm0 = VPSLLQZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsradzmi_vpsradzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsradzmi_vpsradzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZmi + %zmm0 = VPSRADZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsraqzmi_vpsraqzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsraqzmi_vpsraqzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZmi + %zmm0 = VPSRAQZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrldzmi_vpsrldzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrldzmi_vpsrldzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZmi + %zmm0 = VPSRLDZri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrlqzmi_vpsrlqzri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlqzmi_vpsrlqzri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZmi + %zmm0 = VPSRLQZri %1, 0 + RET 0 +... +--- +name: stack_fold_vrcp14pdzm_vrcp14pdzr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14pdzm_vrcp14pdzr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PDZm + %zmm0 = VRCP14PDZr %1 + RET 0 +... +--- +name: stack_fold_vrcp14pszm_vrcp14pszr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14pszm_vrcp14pszr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PSZm + %zmm0 = VRCP14PSZr %1 + RET 0 +... +--- +name: stack_fold_vrndscalepdzrmbi_vrndscalepdzrrib_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdzrmbi_vrndscalepdzrrib_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZrmbi + %zmm0 = VRNDSCALEPDZrrib %1, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepdzrmi_vrndscalepdzrri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdzrmi_vrndscalepdzrri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZrmi + %zmm0 = VRNDSCALEPDZrri %1, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepszrmbi_vrndscalepszrrib_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepszrmbi_vrndscalepszrrib_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZrmbi + %zmm0 = VRNDSCALEPSZrrib %1, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepszrmi_vrndscalepszrri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepszrmi_vrndscalepszrri_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZrmi + %zmm0 = VRNDSCALEPSZrri %1, 0 + RET 0 +... +--- +name: stack_fold_vrsqrt14pdzm_vrsqrt14pdzr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pdzm_vrsqrt14pdzr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PDZm + %zmm0 = VRSQRT14PDZr %1 + RET 0 +... +--- +name: stack_fold_vrsqrt14pszm_vrsqrt14pszr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pszm_vrsqrt14pszr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PSZm + %zmm0 = VRSQRT14PSZr %1 + RET 0 +... +--- +name: stack_fold_vsqrtpdzm_vsqrtpdzr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpdzm_vsqrtpdzr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPDZm + %zmm0 = VSQRTPDZr %1 + RET 0 +... +--- +name: stack_fold_vsqrtpszm_vsqrtpszr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpszm_vsqrtpszr_test + %1 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPSZm + %zmm0 = VSQRTPSZr %1 + RET 0 +... +--- +name: stack_fold_vucomisdzrm_vucomisdzrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vucomisdzrm_vucomisdzrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUCOMISDZrm + VUCOMISDZrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vucomisszrm_vucomisszrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vucomisszrm_vucomisszrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUCOMISSZrm + VUCOMISSZrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vaddpdzrm_vaddpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vaddpdzrm_vaddpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPDZrm + %zmm0 = VADDPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddpszrm_vaddpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vaddpszrm_vaddpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPSZrm + %zmm0 = VADDPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddsdzrm_vaddsdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddsdzrm_vaddsdzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSDZrm + %xmm0 = VADDSDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddsdzrm_int_vaddsdzrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddsdzrm_int_vaddsdzrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSDZrm_Int + %xmm0 = VADDSDZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddsszrm_vaddsszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddsszrm_vaddsszrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSSZrm + %xmm0 = VADDSSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddsszrm_int_vaddsszrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddsszrm_int_vaddsszrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSSZrm_Int + %xmm0 = VADDSSZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_valigndzrmi_valigndzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_valigndzrmi_valigndzrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNDZrmi + %zmm0 = VALIGNDZrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_valignqzrmi_valignqzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_valignqzrmi_valignqzrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNQZrmi + %zmm0 = VALIGNQZrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vblendmpdzrm_vblendmpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpdzrm_vblendmpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPDZrm + %zmm0 = VBLENDMPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vblendmpszrm_vblendmpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpszrm_vblendmpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPSZrm + %zmm0 = VBLENDMPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vbroadcastsdzmkz_vbroadcastsdzrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastsdzmkz_vbroadcastsdzrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSDZmkz + %zmm0 = VBROADCASTSDZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vbroadcastsszmkz_vbroadcastsszrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastsszmkz_vbroadcastsszrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSSZmkz + %zmm0 = VBROADCASTSSZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcmppdzrmbi_vcmppdzrrib_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdzrmbi_vcmppdzrrib_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZrmbi + %k1 = VCMPPDZrrib undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppdzrmbi_alt_vcmppdzrrib_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdzrmbi_alt_vcmppdzrrib_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZrmbi_alt + %k1 = VCMPPDZrrib_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppdzrmi_vcmppdzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdzrmi_vcmppdzrri_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZrmi + %k1 = VCMPPDZrri undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppdzrmi_alt_vcmppdzrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdzrmi_alt_vcmppdzrri_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZrmi_alt + %k1 = VCMPPDZrri_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppszrmbi_vcmppszrrib_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppszrmbi_vcmppszrrib_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZrmbi + %k1 = VCMPPSZrrib undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppszrmbi_alt_vcmppszrrib_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppszrmbi_alt_vcmppszrrib_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZrmbi_alt + %k1 = VCMPPSZrrib_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppszrmi_vcmppszrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppszrmi_vcmppszrri_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZrmi + %k1 = VCMPPSZrri undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppszrmi_alt_vcmppszrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppszrmi_alt_vcmppszrri_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZrmi_alt + %k1 = VCMPPSZrri_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmpsdzrm_vcmpsdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmpsdzrm_vcmpsdzrr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSDZrm + %k1 = VCMPSDZrr undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmpsdzrm_int_vcmpsdzrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmpsdzrm_int_vcmpsdzrr_int_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSDZrm_Int + %k1 = VCMPSDZrr_Int undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmpsdzrmi_alt_vcmpsdzrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmpsdzrmi_alt_vcmpsdzrri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSDZrmi_alt + %k1 = VCMPSDZrri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmpsszrm_vcmpsszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmpsszrm_vcmpsszrr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSSZrm + %k1 = VCMPSSZrr undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmpsszrm_int_vcmpsszrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmpsszrm_int_vcmpsszrr_int_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSSZrm_Int + %k1 = VCMPSSZrr_Int undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmpsszrmi_alt_vcmpsszrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmpsszrmi_alt_vcmpsszrri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSSZrmi_alt + %k1 = VCMPSSZrri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcvtdq2pdzrmkz_vcvtdq2pdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pdzrmkz_vcvtdq2pdzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PDZrmkz + %zmm0 = VCVTDQ2PDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtdq2pszrmkz_vcvtdq2pszrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pszrmkz_vcvtdq2pszrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PSZrmkz + %zmm0 = VCVTDQ2PSZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2dqzrmkz_vcvtpd2dqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2dqzrmkz_vcvtpd2dqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2DQZrmkz + %ymm0 = VCVTPD2DQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2pszrmkz_vcvtpd2pszrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2pszrmkz_vcvtpd2pszrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2PSZrmkz + %ymm0 = VCVTPD2PSZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2udqzrmkz_vcvtpd2udqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2udqzrmkz_vcvtpd2udqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UDQZrmkz + %ymm0 = VCVTPD2UDQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtph2pszrmkz_vcvtph2pszrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtph2pszrmkz_vcvtph2pszrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPH2PSZrmkz + %zmm0 = VCVTPH2PSZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2dqzrmkz_vcvtps2dqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2dqzrmkz_vcvtps2dqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2DQZrmkz + %zmm0 = VCVTPS2DQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2pdzrmbkz_vcvtps2pdzrrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdzrmbkz_vcvtps2pdzrrbkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZrmbkz + %zmm0 = VCVTPS2PDZrrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2pdzrmkz_vcvtps2pdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdzrmkz_vcvtps2pdzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZrmkz + %zmm0 = VCVTPS2PDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2udqzrmkz_vcvtps2udqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2udqzrmkz_vcvtps2udqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UDQZrmkz + %zmm0 = VCVTPS2UDQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtsi2sdzrm_vcvtsi2sdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vcvtsi2sdzrm_vcvtsi2sdzrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI2SDZrm + %xmm0 = VCVTSI2SDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtsi2sdzrm_int_vcvtsi2sdzrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vcvtsi2sdzrm_int_vcvtsi2sdzrr_int_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI2SDZrm_Int + %xmm0 = VCVTSI2SDZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtsi2sszrm_vcvtsi2sszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vcvtsi2sszrm_vcvtsi2sszrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI2SSZrm + %xmm0 = VCVTSI2SSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtsi2sszrm_int_vcvtsi2sszrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vcvtsi2sszrm_int_vcvtsi2sszrr_int_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI2SSZrm_Int + %xmm0 = VCVTSI2SSZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtsi642sdzrm_vcvtsi642sdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vcvtsi642sdzrm_vcvtsi642sdzrr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI642SDZrm + %xmm0 = VCVTSI642SDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtsi642sdzrm_int_vcvtsi642sdzrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vcvtsi642sdzrm_int_vcvtsi642sdzrr_int_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI642SDZrm_Int + %xmm0 = VCVTSI642SDZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtsi642sszrm_vcvtsi642sszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vcvtsi642sszrm_vcvtsi642sszrr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI642SSZrm + %xmm0 = VCVTSI642SSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtsi642sszrm_int_vcvtsi642sszrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vcvtsi642sszrm_int_vcvtsi642sszrr_int_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTSI642SSZrm_Int + %xmm0 = VCVTSI642SSZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqzrmbkz_vcvttpd2dqzrrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqzrmbkz_vcvttpd2dqzrrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZrmbkz + %ymm0 = VCVTTPD2DQZrrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqzrmkz_vcvttpd2dqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqzrmkz_vcvttpd2dqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZrmkz + %ymm0 = VCVTTPD2DQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqzrmbkz_vcvttpd2udqzrrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqzrmbkz_vcvttpd2udqzrrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZrmbkz + %ymm0 = VCVTTPD2UDQZrrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqzrmkz_vcvttpd2udqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqzrmkz_vcvttpd2udqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZrmkz + %ymm0 = VCVTTPD2UDQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2dqzrmbkz_vcvttps2dqzrrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqzrmbkz_vcvttps2dqzrrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZrmbkz + %zmm0 = VCVTTPS2DQZrrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2dqzrmkz_vcvttps2dqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqzrmkz_vcvttps2dqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZrmkz + %zmm0 = VCVTTPS2DQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2udqzrmbkz_vcvttps2udqzrrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqzrmbkz_vcvttps2udqzrrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZrmbkz + %zmm0 = VCVTTPS2UDQZrrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2udqzrmkz_vcvttps2udqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqzrmkz_vcvttps2udqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZrmkz + %zmm0 = VCVTTPS2UDQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtudq2pdzrmkz_vcvtudq2pdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pdzrmkz_vcvtudq2pdzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PDZrmkz + %zmm0 = VCVTUDQ2PDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtudq2pszrmkz_vcvtudq2pszrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pszrmkz_vcvtudq2pszrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PSZrmkz + %zmm0 = VCVTUDQ2PSZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtusi2sdzrm_vcvtusi2sdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vcvtusi2sdzrm_vcvtusi2sdzrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTUSI2SDZrm + %xmm0 = VCVTUSI2SDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtusi2sdzrm_int_vcvtusi2sdzrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vcvtusi2sdzrm_int_vcvtusi2sdzrr_int_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTUSI2SDZrm_Int + %xmm0 = VCVTUSI2SDZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtusi2sszrm_vcvtusi2sszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vcvtusi2sszrm_vcvtusi2sszrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTUSI2SSZrm + %xmm0 = VCVTUSI2SSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtusi2sszrm_int_vcvtusi2sszrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_vcvtusi2sszrm_int_vcvtusi2sszrr_int_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTUSI2SSZrm_Int + %xmm0 = VCVTUSI2SSZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtusi642sdzrm_vcvtusi642sdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vcvtusi642sdzrm_vcvtusi642sdzrr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTUSI642SDZrm + %xmm0 = VCVTUSI642SDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtusi642sdzrm_int_vcvtusi642sdzrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vcvtusi642sdzrm_int_vcvtusi642sdzrr_int_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTUSI642SDZrm_Int + %xmm0 = VCVTUSI642SDZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtusi642sszrm_vcvtusi642sszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vcvtusi642sszrm_vcvtusi642sszrr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTUSI642SSZrm + %xmm0 = VCVTUSI642SSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vcvtusi642sszrm_int_vcvtusi642sszrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_vcvtusi642sszrm_int_vcvtusi642sszrr_int_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VCVTUSI642SSZrm_Int + %xmm0 = VCVTUSI642SSZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivpdzrm_vdivpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vdivpdzrm_vdivpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPDZrm + %zmm0 = VDIVPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivpszrm_vdivpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vdivpszrm_vdivpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPSZrm + %zmm0 = VDIVPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivsdzrm_vdivsdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivsdzrm_vdivsdzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSDZrm + %xmm0 = VDIVSDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivsdzrm_int_vdivsdzrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivsdzrm_int_vdivsdzrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSDZrm_Int + %xmm0 = VDIVSDZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivsszrm_vdivsszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivsszrm_vdivsszrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSSZrm + %xmm0 = VDIVSSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivsszrm_int_vdivsszrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivsszrm_int_vdivsszrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSSZrm_Int + %xmm0 = VDIVSSZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vexpandpdzrmkz_vexpandpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpdzrmkz_vexpandpdzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPDZrmkz + %zmm0 = VEXPANDPDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vexpandpszrmkz_vexpandpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpszrmkz_vexpandpszrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPSZrmkz + %zmm0 = VEXPANDPSZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vgetexppdmbkz_vgetexppdrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppdmbkz_vgetexppdrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDmbkz + %zmm0 = VGETEXPPDrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vgetexppdmkz_vgetexppdrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppdmkz_vgetexppdrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDmkz + %zmm0 = VGETEXPPDrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vgetexppsmbkz_vgetexppsrbkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppsmbkz_vgetexppsrbkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSmbkz + %zmm0 = VGETEXPPSrbkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vgetexppsmkz_vgetexppsrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppsmkz_vgetexppsrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSmkz + %zmm0 = VGETEXPPSrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vgetexpsdm_vgetexpsdr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetexpsdm_vgetexpsdr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPSDm + %xmm0 = VGETEXPSDr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vgetexpssm_vgetexpssr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetexpssm_vgetexpssr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPSSm + %xmm0 = VGETEXPSSr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vgetmantpdzrmbikz_vgetmantpdzrribkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdzrmbikz_vgetmantpdzrribkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZrmbikz + %zmm0 = VGETMANTPDZrribkz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpdzrmikz_vgetmantpdzrrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdzrmikz_vgetmantpdzrrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZrmikz + %zmm0 = VGETMANTPDZrrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpszrmbikz_vgetmantpszrribkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpszrmbikz_vgetmantpszrribkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZrmbikz + %zmm0 = VGETMANTPSZrribkz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpszrmikz_vgetmantpszrrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpszrmikz_vgetmantpszrrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZrmikz + %zmm0 = VGETMANTPSZrrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vgetmantsdz128rmi_vgetmantsdz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantsdz128rmi_vgetmantsdz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTSDZ128rmi + %xmm0 = VGETMANTSDZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vgetmantssz128rmi_vgetmantssz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantssz128rmi_vgetmantssz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTSSZ128rmi + %xmm0 = VGETMANTSSZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinsertf32x4zrm_vinsertf32x4zrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf32x4zrm_vinsertf32x4zrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF32x4Zrm + %zmm0 = VINSERTF32x4Zrr undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinsertf64x4zrm_vinsertf64x4zrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf64x4zrm_vinsertf64x4zrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF64x4Zrm + %zmm0 = VINSERTF64x4Zrr undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinserti32x4zrm_vinserti32x4zrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinserti32x4zrm_vinserti32x4zrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI32x4Zrm + %zmm0 = VINSERTI32x4Zrr undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinserti64x4zrm_vinserti64x4zrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vinserti64x4zrm_vinserti64x4zrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI64x4Zrm + %zmm0 = VINSERTI64x4Zrr undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinsertpszrm_vinsertpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinsertpszrm_vinsertpszrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTPSZrm + %xmm0 = VINSERTPSZrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vmaxcpdzrm_vmaxcpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdzrm_vmaxcpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZrm + %zmm0 = VMAXCPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcpdzrmb_vmaxpdzrb_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdzrmb_vmaxpdzrb_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZrmb + %zmm0 = VMAXPDZrb undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcpszrm_vmaxcpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpszrm_vmaxcpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZrm + %zmm0 = VMAXCPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcpszrmb_vmaxpszrb_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpszrmb_vmaxpszrb_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZrmb + %zmm0 = VMAXPSZrb undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcsdzrm_vmaxcsdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcsdzrm_vmaxcsdzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCSDZrm + %xmm0 = VMAXCSDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcsszrm_vmaxcsszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcsszrm_vmaxcsszrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCSSZrm + %xmm0 = VMAXCSSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxpdzrm_vmaxpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpdzrm_vmaxpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPDZrm + %zmm0 = VMAXPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxpszrm_vmaxpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpszrm_vmaxpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPSZrm + %zmm0 = VMAXPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxsdzrm_vmaxsdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxsdzrm_vmaxsdzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSDZrm + %xmm0 = VMAXSDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxsdzrm_int_vmaxsdzrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxsdzrm_int_vmaxsdzrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSDZrm_Int + %xmm0 = VMAXSDZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxsszrm_vmaxsszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxsszrm_vmaxsszrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSSZrm + %xmm0 = VMAXSSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxsszrm_int_vmaxsszrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxsszrm_int_vmaxsszrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSSZrm_Int + %xmm0 = VMAXSSZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpdzrm_vmincpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpdzrm_vmincpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZrm + %zmm0 = VMINCPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpdzrmb_vminpdzrb_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpdzrmb_vminpdzrb_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZrmb + %zmm0 = VMINPDZrb undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpszrm_vmincpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpszrm_vmincpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZrm + %zmm0 = VMINCPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpszrmb_vminpszrb_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpszrmb_vminpszrb_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZrmb + %zmm0 = VMINPSZrb undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincsdzrm_vmincsdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmincsdzrm_vmincsdzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCSDZrm + %xmm0 = VMINCSDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincsszrm_vmincsszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmincsszrm_vmincsszrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCSSZrm + %xmm0 = VMINCSSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminpdzrm_vminpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vminpdzrm_vminpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPDZrm + %zmm0 = VMINPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vminpszrm_vminpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vminpszrm_vminpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPSZrm + %zmm0 = VMINPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vminsdzrm_vminsdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminsdzrm_vminsdzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSDZrm + %xmm0 = VMINSDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminsdzrm_int_vminsdzrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminsdzrm_int_vminsdzrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSDZrm_Int + %xmm0 = VMINSDZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminsszrm_vminsszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminsszrm_vminsszrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSSZrm + %xmm0 = VMINSSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminsszrm_int_vminsszrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminsszrm_int_vminsszrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSSZrm_Int + %xmm0 = VMINSSZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmovapdzrmkz_vmovapdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovapdzrmkz_vmovapdzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPDZrmkz + %zmm0 = VMOVAPDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovapszrmkz_vmovapszrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovapszrmkz_vmovapszrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPSZrmkz + %zmm0 = VMOVAPSZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovddupzrmkz_vmovddupzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovddupzrmkz_vmovddupzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDDUPZrmkz + %zmm0 = VMOVDDUPZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqa32zrmkz_vmovdqa32zrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa32zrmkz_vmovdqa32zrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA32Zrmkz + %zmm0 = VMOVDQA32Zrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqa64zrmkz_vmovdqa64zrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa64zrmkz_vmovdqa64zrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA64Zrmkz + %zmm0 = VMOVDQA64Zrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqu32zrmkz_vmovdqu32zrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu32zrmkz_vmovdqu32zrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU32Zrmkz + %zmm0 = VMOVDQU32Zrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqu64zrmkz_vmovdqu64zrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu64zrmkz_vmovdqu64zrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU64Zrmkz + %zmm0 = VMOVDQU64Zrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovhpsz128rm_vmovlhpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovhpsz128rm_vmovlhpszrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVHPSZ128rm + %xmm0 = VMOVLHPSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmovlpsz128rm_vmovhlpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovlpsz128rm_vmovhlpszrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVLPSZ128rm + %xmm0 = VMOVHLPSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmovshdupzrmkz_vmovshdupzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovshdupzrmkz_vmovshdupzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSHDUPZrmkz + %zmm0 = VMOVSHDUPZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovsldupzrmkz_vmovsldupzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovsldupzrmkz_vmovsldupzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSLDUPZrmkz + %zmm0 = VMOVSLDUPZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovupdzrmkz_vmovupdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovupdzrmkz_vmovupdzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPDZrmkz + %zmm0 = VMOVUPDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovupszrmkz_vmovupszrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vmovupszrmkz_vmovupszrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPSZrmkz + %zmm0 = VMOVUPSZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmulpdzrm_vmulpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmulpdzrm_vmulpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPDZrm + %zmm0 = VMULPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulpszrm_vmulpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmulpszrm_vmulpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPSZrm + %zmm0 = VMULPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulsdzrm_vmulsdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulsdzrm_vmulsdzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSDZrm + %xmm0 = VMULSDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulsdzrm_int_vmulsdzrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulsdzrm_int_vmulsdzrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSDZrm_Int + %xmm0 = VMULSDZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulsszrm_vmulsszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulsszrm_vmulsszrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSSZrm + %xmm0 = VMULSSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulsszrm_int_vmulsszrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulsszrm_int_vmulsszrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSSZrm_Int + %xmm0 = VMULSSZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpabsdzrmkz_vpabsdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsdzrmkz_vpabsdzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSDZrmkz + %zmm0 = VPABSDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpabsqzrmkz_vpabsqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsqzrmkz_vpabsqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSQZrmkz + %zmm0 = VPABSQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpadddzrm_vpadddzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpadddzrm_vpadddzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDDZrm + %zmm0 = VPADDDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddqzrm_vpaddqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddqzrm_vpaddqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDQZrm + %zmm0 = VPADDQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpanddzrm_vpanddzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpanddzrm_vpanddzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDDZrm + %zmm0 = VPANDDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpandndzrm_vpandndzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpandndzrm_vpandndzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNDZrm + %zmm0 = VPANDNDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpandnqzrm_vpandnqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpandnqzrm_vpandnqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNQZrm + %zmm0 = VPANDNQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpandqzrm_vpandqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpandqzrm_vpandqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDQZrm + %zmm0 = VPANDQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmdzrm_vpblendmdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmdzrm_vpblendmdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMDZrm + %zmm0 = VPBLENDMDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmqzrm_vpblendmqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmqzrm_vpblendmqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMQZrm + %zmm0 = VPBLENDMQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastdzmkz_vpbroadcastdzrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastdzmkz_vpbroadcastdzrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTDZmkz + %zmm0 = VPBROADCASTDZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastqzmkz_vpbroadcastqzrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastqzmkz_vpbroadcastqzrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTQZmkz + %zmm0 = VPBROADCASTQZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpdzrmi_vpcmpdzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdzrmi_vpcmpdzrri_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZrmi + %k1 = VPCMPDZrri undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpdzrmi_alt_vpcmpdzrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdzrmi_alt_vpcmpdzrri_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZrmi_alt + %k1 = VPCMPDZrri_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpeqdzrm_vpcmpeqdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqdzrm_vpcmpeqdzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQDZrm + %k1 = VPCMPEQDZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqqzrm_vpcmpeqqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqqzrm_vpcmpeqqzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQQZrm + %k1 = VPCMPEQQZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtdzrm_vpcmpgtdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtdzrm_vpcmpgtdzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTDZrm + %k1 = VPCMPGTDZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtqzrm_vpcmpgtqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtqzrm_vpcmpgtqzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTQZrm + %k1 = VPCMPGTQZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpqzrmi_vpcmpqzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqzrmi_vpcmpqzrri_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZrmi + %k1 = VPCMPQZrri undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpqzrmi_alt_vpcmpqzrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqzrmi_alt_vpcmpqzrri_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZrmi_alt + %k1 = VPCMPQZrri_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudzrmi_vpcmpudzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudzrmi_vpcmpudzrri_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZrmi + %k1 = VPCMPUDZrri undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudzrmi_alt_vpcmpudzrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudzrmi_alt_vpcmpudzrri_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZrmi_alt + %k1 = VPCMPUDZrri_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqzrmi_vpcmpuqzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqzrmi_vpcmpuqzrri_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZrmi + %k1 = VPCMPUQZrri undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqzrmi_alt_vpcmpuqzrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqzrmi_alt_vpcmpuqzrri_alt_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZrmi_alt + %k1 = VPCMPUQZrri_alt undef %zmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermdzrm_vpermdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermdzrm_vpermdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMDZrm + %zmm0 = VPERMDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpermilpdzmikz_vpermilpdzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpdzmikz_vpermilpdzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZmikz + %zmm0 = VPERMILPDZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermilpdzrm_vpermilpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpdzrm_vpermilpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZrm + %zmm0 = VPERMILPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpermilpszmikz_vpermilpszrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpszmikz_vpermilpszrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZmikz + %zmm0 = VPERMILPSZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermilpszrm_vpermilpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpszrm_vpermilpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZrm + %zmm0 = VPERMILPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpermpdzmikz_vpermpdzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpermpdzmikz_vpermpdzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZmikz + %zmm0 = VPERMPDZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermpdzrm_vpermpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermpdzrm_vpermpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZrm + %zmm0 = VPERMPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpermpszrm_vpermpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermpszrm_vpermpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPSZrm + %zmm0 = VPERMPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpermqzmikz_vpermqzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpermqzmikz_vpermqzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZmikz + %zmm0 = VPERMQZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermqzrm_vpermqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermqzrm_vpermqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZrm + %zmm0 = VPERMQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpexpanddzrmkz_vpexpanddzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpexpanddzrmkz_vpexpanddzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDDZrmkz + %zmm0 = VPEXPANDDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpexpandqzrmkz_vpexpandqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpexpandqzrmkz_vpexpandqzrrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDQZrmkz + %zmm0 = VPEXPANDQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsdzrm_vpmaxsdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsdzrm_vpmaxsdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSDZrm + %zmm0 = VPMAXSDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsqzrm_vpmaxsqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsqzrm_vpmaxsqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSQZrm + %zmm0 = VPMAXSQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxudzrm_vpmaxudzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxudzrm_vpmaxudzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUDZrm + %zmm0 = VPMAXUDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxuqzrm_vpmaxuqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuqzrm_vpmaxuqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUQZrm + %zmm0 = VPMAXUQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsdzrm_vpminsdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsdzrm_vpminsdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSDZrm + %zmm0 = VPMINSDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsqzrm_vpminsqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsqzrm_vpminsqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSQZrm + %zmm0 = VPMINSQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminudzrm_vpminudzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminudzrm_vpminudzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUDZrm + %zmm0 = VPMINUDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminuqzrm_vpminuqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminuqzrm_vpminuqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUQZrm + %zmm0 = VPMINUQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxbdzrmkz_vpmovsxbdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbdzrmkz_vpmovsxbdzrrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBDZrmkz + %zmm0 = VPMOVSXBDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxbqzrmkz_vpmovsxbqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbqzrmkz_vpmovsxbqzrrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBQZrmkz + %zmm0 = VPMOVSXBQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxdqzrmkz_vpmovsxdqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxdqzrmkz_vpmovsxdqzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXDQZrmkz + %zmm0 = VPMOVSXDQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxwdzrmkz_vpmovsxwdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwdzrmkz_vpmovsxwdzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWDZrmkz + %zmm0 = VPMOVSXWDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxwqzrmkz_vpmovsxwqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwqzrmkz_vpmovsxwqzrrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWQZrmkz + %zmm0 = VPMOVSXWQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxbdzrmkz_vpmovzxbdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbdzrmkz_vpmovzxbdzrrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBDZrmkz + %zmm0 = VPMOVZXBDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxbqzrmkz_vpmovzxbqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbqzrmkz_vpmovzxbqzrrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBQZrmkz + %zmm0 = VPMOVZXBQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxdqzrmkz_vpmovzxdqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxdqzrmkz_vpmovzxdqzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXDQZrmkz + %zmm0 = VPMOVZXDQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxwdzrmkz_vpmovzxwdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwdzrmkz_vpmovzxwdzrrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWDZrmkz + %zmm0 = VPMOVZXWDZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxwqzrmkz_vpmovzxwqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwqzrmkz_vpmovzxwqzrrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWQZrmkz + %zmm0 = VPMOVZXWQZrrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmuldqzrm_vpmuldqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmuldqzrm_vpmuldqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULDQZrm + %zmm0 = VPMULDQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulldzrm_vpmulldzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulldzrm_vpmulldzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLDZrm + %zmm0 = VPMULLDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmuludqzrm_vpmuludqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmuludqzrm_vpmuludqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULUDQZrm + %zmm0 = VPMULUDQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpordzrm_vpordzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpordzrm_vpordzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORDZrm + %zmm0 = VPORDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vporqzrm_vporqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vporqzrm_vporqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORQZrm + %zmm0 = VPORQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vproldzmikz_vproldzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vproldzmikz_vproldzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLDZmikz + %zmm0 = VPROLDZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vprolqzmikz_vprolqzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vprolqzmikz_vprolqzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLQZmikz + %zmm0 = VPROLQZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vprolvdzrm_vprolvdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vprolvdzrm_vprolvdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVDZrm + %zmm0 = VPROLVDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vprolvqzrm_vprolvqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vprolvqzrm_vprolvqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVQZrm + %zmm0 = VPROLVQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vprordzmikz_vprordzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vprordzmikz_vprordzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORDZmikz + %zmm0 = VPRORDZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vprorqzmikz_vprorqzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vprorqzmikz_vprorqzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORQZmikz + %zmm0 = VPRORQZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vprorvdzrm_vprorvdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vprorvdzrm_vprorvdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVDZrm + %zmm0 = VPRORVDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vprorvqzrm_vprorvqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vprorvqzrm_vprorvqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVQZrm + %zmm0 = VPRORVQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshufdzmikz_vpshufdzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpshufdzmikz_vpshufdzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFDZmikz + %zmm0 = VPSHUFDZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpslldzmikz_vpslldzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpslldzmikz_vpslldzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZmikz + %zmm0 = VPSLLDZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpslldzrm_vpslldzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpslldzrm_vpslldzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZrm + %zmm0 = VPSLLDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllqzmikz_vpsllqzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsllqzmikz_vpsllqzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZmikz + %zmm0 = VPSLLQZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsllqzrm_vpsllqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllqzrm_vpsllqzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZrm + %zmm0 = VPSLLQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvdzrm_vpsllvdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvdzrm_vpsllvdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVDZrm + %zmm0 = VPSLLVDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvqzrm_vpsllvqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvqzrm_vpsllvqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVQZrm + %zmm0 = VPSLLVQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsradzmikz_vpsradzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsradzmikz_vpsradzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZmikz + %zmm0 = VPSRADZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsradzrm_vpsradzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsradzrm_vpsradzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZrm + %zmm0 = VPSRADZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsraqzmikz_vpsraqzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsraqzmikz_vpsraqzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZmikz + %zmm0 = VPSRAQZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsraqzrm_vpsraqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsraqzrm_vpsraqzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZrm + %zmm0 = VPSRAQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsravdzrm_vpsravdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravdzrm_vpsravdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVDZrm + %zmm0 = VPSRAVDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsravqzrm_vpsravqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravqzrm_vpsravqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVQZrm + %zmm0 = VPSRAVQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrldzmikz_vpsrldzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrldzmikz_vpsrldzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZmikz + %zmm0 = VPSRLDZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrldzrm_vpsrldzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrldzrm_vpsrldzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZrm + %zmm0 = VPSRLDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlqzmikz_vpsrlqzrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlqzmikz_vpsrlqzrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZmikz + %zmm0 = VPSRLQZrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrlqzrm_vpsrlqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlqzrm_vpsrlqzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZrm + %zmm0 = VPSRLQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvdzrm_vpsrlvdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvdzrm_vpsrlvdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVDZrm + %zmm0 = VPSRLVDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvqzrm_vpsrlvqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvqzrm_vpsrlvqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVQZrm + %zmm0 = VPSRLVQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubdzrm_vpsubdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubdzrm_vpsubdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBDZrm + %zmm0 = VPSUBDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubqzrm_vpsubqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubqzrm_vpsubqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBQZrm + %zmm0 = VPSUBQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vptestmdzrm_vptestmdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmdzrm_vptestmdzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMDZrm + %k1 = VPTESTMDZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestmqzrm_vptestmqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmqzrm_vptestmqzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMQZrm + %k1 = VPTESTMQZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmdzrm_vptestnmdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmdzrm_vptestnmdzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMDZrm + %k1 = VPTESTNMDZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmqzrm_vptestnmqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmqzrm_vptestnmqzrr_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMQZrm + %k1 = VPTESTNMQZrr undef %zmm0, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhdqzrm_vpunpckhdqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhdqzrm_vpunpckhdqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHDQZrm + %zmm0 = VPUNPCKHDQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhqdqzrm_vpunpckhqdqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhqdqzrm_vpunpckhqdqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHQDQZrm + %zmm0 = VPUNPCKHQDQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckldqzrm_vpunpckldqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckldqzrm_vpunpckldqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLDQZrm + %zmm0 = VPUNPCKLDQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklqdqzrm_vpunpcklqdqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklqdqzrm_vpunpcklqdqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLQDQZrm + %zmm0 = VPUNPCKLQDQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpxordzrm_vpxordzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpxordzrm_vpxordzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORDZrm + %zmm0 = VPXORDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vpxorqzrm_vpxorqzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpxorqzrm_vpxorqzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORQZrm + %zmm0 = VPXORQZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vrcp14pdzmkz_vrcp14pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14pdzmkz_vrcp14pdzrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PDZmkz + %zmm0 = VRCP14PDZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrcp14pszmkz_vrcp14pszrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14pszmkz_vrcp14pszrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PSZmkz + %zmm0 = VRCP14PSZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrndscalepdzrmbikz_vrndscalepdzrribkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdzrmbikz_vrndscalepdzrribkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZrmbikz + %zmm0 = VRNDSCALEPDZrribkz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepdzrmikz_vrndscalepdzrrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdzrmikz_vrndscalepdzrrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZrmikz + %zmm0 = VRNDSCALEPDZrrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepszrmbikz_vrndscalepszrribkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepszrmbikz_vrndscalepszrribkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZrmbikz + %zmm0 = VRNDSCALEPSZrribkz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepszrmikz_vrndscalepszrrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepszrmikz_vrndscalepszrrikz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZrmikz + %zmm0 = VRNDSCALEPSZrrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrndscalesdm_vrndscalesdr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalesdm_vrndscalesdr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALESDm + %xmm0 = VRNDSCALESDr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrndscalessm_vrndscalessr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalessm_vrndscalessr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALESSm + %xmm0 = VRNDSCALESSr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrsqrt14pdzmkz_vrsqrt14pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pdzmkz_vrsqrt14pdzrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PDZmkz + %zmm0 = VRSQRT14PDZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrsqrt14pszmkz_vrsqrt14pszrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pszmkz_vrsqrt14pszrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PSZmkz + %zmm0 = VRSQRT14PSZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vscalefpdzrm_vscalefpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpdzrm_vscalefpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPDZrm + %zmm0 = VSCALEFPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vscalefpszrm_vscalefpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpszrm_vscalefpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPSZrm + %zmm0 = VSCALEFPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vscalefsdz128rm_vscalefsdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefsdz128rm_vscalefsdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFSDZ128rm + %xmm0 = VSCALEFSDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vscalefssz128rm_vscalefssz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefssz128rm_vscalefssz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFSSZ128rm + %xmm0 = VSCALEFSSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vshuff32x4zrmi_vshuff32x4zrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshuff32x4zrmi_vshuff32x4zrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF32X4Zrmi + %zmm0 = VSHUFF32X4Zrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshuff64x2zrmi_vshuff64x2zrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshuff64x2zrmi_vshuff64x2zrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF64X2Zrmi + %zmm0 = VSHUFF64X2Zrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufi32x4zrmi_vshufi32x4zrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshufi32x4zrmi_vshufi32x4zrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI32X4Zrmi + %zmm0 = VSHUFI32X4Zrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufi64x2zrmi_vshufi64x2zrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshufi64x2zrmi_vshufi64x2zrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI64X2Zrmi + %zmm0 = VSHUFI64X2Zrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufpdzrmi_vshufpdzrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshufpdzrmi_vshufpdzrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPDZrmi + %zmm0 = VSHUFPDZrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufpszrmi_vshufpszrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshufpszrmi_vshufpszrri_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPSZrmi + %zmm0 = VSHUFPSZrri undef %zmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vsqrtpdzmkz_vsqrtpdzrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpdzmkz_vsqrtpdzrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPDZmkz + %zmm0 = VSQRTPDZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vsqrtpszmkz_vsqrtpszrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpszmkz_vsqrtpszrkz_test + %2 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPSZmkz + %zmm0 = VSQRTPSZrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vsubpdzrm_vsubpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vsubpdzrm_vsubpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPDZrm + %zmm0 = VSUBPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubpszrm_vsubpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vsubpszrm_vsubpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPSZrm + %zmm0 = VSUBPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubsdzrm_vsubsdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubsdzrm_vsubsdzrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSDZrm + %xmm0 = VSUBSDZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubsdzrm_int_vsubsdzrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubsdzrm_int_vsubsdzrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSDZrm_Int + %xmm0 = VSUBSDZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubsszrm_vsubsszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubsszrm_vsubsszrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSSZrm + %xmm0 = VSUBSSZrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubsszrm_int_vsubsszrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubsszrm_int_vsubsszrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSSZrm_Int + %xmm0 = VSUBSSZrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpckhpdzrm_vunpckhpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpdzrm_vunpckhpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPDZrm + %zmm0 = VUNPCKHPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpckhpszrm_vunpckhpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpszrm_vunpckhpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPSZrm + %zmm0 = VUNPCKHPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpcklpdzrm_vunpcklpdzrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpdzrm_vunpcklpdzrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPDZrm + %zmm0 = VUNPCKLPDZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpcklpszrm_vunpcklpszrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpszrm_vunpcklpszrr_test + %2 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPSZrm + %zmm0 = VUNPCKLPSZrr undef %zmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddpdzrmkz_vaddpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vaddpdzrmkz_vaddpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPDZrmkz + %zmm0 = VADDPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vaddpszrmkz_vaddpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vaddpszrmkz_vaddpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPSZrmkz + %zmm0 = VADDPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vaddsdzrm_intkz_vaddsdzrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddsdzrm_intkz_vaddsdzrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSDZrm_Intkz + %xmm0 = VADDSDZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vaddsszrm_intkz_vaddsszrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddsszrm_intkz_vaddsszrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSSZrm_Intkz + %xmm0 = VADDSSZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_valigndzrmikz_valigndzrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_valigndzrmikz_valigndzrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNDZrmikz + %zmm0 = VALIGNDZrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_valignqzrmikz_valignqzrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_valignqzrmikz_valignqzrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNQZrmikz + %zmm0 = VALIGNQZrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vblendmpdzrmk_vblendmpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpdzrmk_vblendmpdzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPDZrmk + %zmm0 = VBLENDMPDZrrk undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vblendmpdzrmkz_vblendmpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpdzrmkz_vblendmpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPDZrmkz + %zmm0 = VBLENDMPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vblendmpszrmk_vblendmpszrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpszrmk_vblendmpszrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPSZrmk + %zmm0 = VBLENDMPSZrrk undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vblendmpszrmkz_vblendmpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpszrmkz_vblendmpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPSZrmkz + %zmm0 = VBLENDMPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vbroadcastsdzmk_vbroadcastsdzrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vbroadcastsdzmk_vbroadcastsdzrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSDZmk + %zmm0 = VBROADCASTSDZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vbroadcastsszmk_vbroadcastsszrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vbroadcastsszmk_vbroadcastsszrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSSZmk + %zmm0 = VBROADCASTSSZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcmppdzrmbi_altk_vcmppdzrrib_altk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdzrmbi_altk_vcmppdzrrib_altk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZrmbi_altk + %k1 = VCMPPDZrrib_altk undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppdzrmbik_vcmppdzrribk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdzrmbik_vcmppdzrribk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZrmbik + %k1 = VCMPPDZrribk undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppdzrmi_altk_vcmppdzrri_altk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdzrmi_altk_vcmppdzrri_altk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZrmi_altk + %k1 = VCMPPDZrri_altk undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppdzrmik_vcmppdzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdzrmik_vcmppdzrrik_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZrmik + %k1 = VCMPPDZrrik undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppszrmbi_altk_vcmppszrrib_altk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppszrmbi_altk_vcmppszrrib_altk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZrmbi_altk + %k1 = VCMPPSZrrib_altk undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppszrmbik_vcmppszrribk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppszrmbik_vcmppszrribk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZrmbik + %k1 = VCMPPSZrribk undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppszrmi_altk_vcmppszrri_altk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppszrmi_altk_vcmppszrri_altk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZrmi_altk + %k1 = VCMPPSZrri_altk undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppszrmik_vcmppszrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppszrmik_vcmppszrrik_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZrmik + %k1 = VCMPPSZrrik undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmpsdzrm_intk_vcmpsdzrr_intk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmpsdzrm_intk_vcmpsdzrr_intk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSDZrm_Intk + %k1 = VCMPSDZrr_Intk undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmpsdzrmi_altk_vcmpsdzrri_altk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmpsdzrmi_altk_vcmpsdzrri_altk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSDZrmi_altk + %k1 = VCMPSDZrri_altk undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmpsszrm_intk_vcmpsszrr_intk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmpsszrm_intk_vcmpsszrr_intk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSSZrm_Intk + %k1 = VCMPSSZrr_Intk undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmpsszrmi_altk_vcmpsszrri_altk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmpsszrmi_altk_vcmpsszrri_altk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPSSZrmi_altk + %k1 = VCMPSSZrri_altk undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcvtdq2pdzrmk_vcvtdq2pdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pdzrmk_vcvtdq2pdzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PDZrmk + %zmm0 = VCVTDQ2PDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtdq2pszrmk_vcvtdq2pszrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pszrmk_vcvtdq2pszrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PSZrmk + %zmm0 = VCVTDQ2PSZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2dqzrmk_vcvtpd2dqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2dqzrmk_vcvtpd2dqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2DQZrmk + %ymm0 = VCVTPD2DQZrrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2pszrmk_vcvtpd2pszrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2pszrmk_vcvtpd2pszrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2PSZrmk + %ymm0 = VCVTPD2PSZrrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2udqzrmk_vcvtpd2udqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2udqzrmk_vcvtpd2udqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UDQZrmk + %ymm0 = VCVTPD2UDQZrrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtph2pszrmk_vcvtph2pszrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtph2pszrmk_vcvtph2pszrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPH2PSZrmk + %zmm0 = VCVTPH2PSZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2dqzrmk_vcvtps2dqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2dqzrmk_vcvtps2dqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2DQZrmk + %zmm0 = VCVTPS2DQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2pdzrmbk_vcvtps2pdzrrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdzrmbk_vcvtps2pdzrrbk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZrmbk + %zmm0 = VCVTPS2PDZrrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2pdzrmk_vcvtps2pdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdzrmk_vcvtps2pdzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZrmk + %zmm0 = VCVTPS2PDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2udqzrmk_vcvtps2udqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2udqzrmk_vcvtps2udqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UDQZrmk + %zmm0 = VCVTPS2UDQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqzrmbk_vcvttpd2dqzrrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqzrmbk_vcvttpd2dqzrrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZrmbk + %ymm0 = VCVTTPD2DQZrrbk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqzrmk_vcvttpd2dqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqzrmk_vcvttpd2dqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZrmk + %ymm0 = VCVTTPD2DQZrrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqzrmbk_vcvttpd2udqzrrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqzrmbk_vcvttpd2udqzrrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZrmbk + %ymm0 = VCVTTPD2UDQZrrbk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqzrmk_vcvttpd2udqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqzrmk_vcvttpd2udqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZrmk + %ymm0 = VCVTTPD2UDQZrrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2dqzrmbk_vcvttps2dqzrrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqzrmbk_vcvttps2dqzrrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZrmbk + %zmm0 = VCVTTPS2DQZrrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2dqzrmk_vcvttps2dqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqzrmk_vcvttps2dqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZrmk + %zmm0 = VCVTTPS2DQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2udqzrmbk_vcvttps2udqzrrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqzrmbk_vcvttps2udqzrrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZrmbk + %zmm0 = VCVTTPS2UDQZrrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2udqzrmk_vcvttps2udqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqzrmk_vcvttps2udqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZrmk + %zmm0 = VCVTTPS2UDQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtudq2pdzrmk_vcvtudq2pdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pdzrmk_vcvtudq2pdzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PDZrmk + %zmm0 = VCVTUDQ2PDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtudq2pszrmk_vcvtudq2pszrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pszrmk_vcvtudq2pszrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PSZrmk + %zmm0 = VCVTUDQ2PSZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vdivpdzrmkz_vdivpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vdivpdzrmkz_vdivpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPDZrmkz + %zmm0 = VDIVPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vdivpszrmkz_vdivpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vdivpszrmkz_vdivpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPSZrmkz + %zmm0 = VDIVPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vdivsdzrm_intkz_vdivsdzrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivsdzrm_intkz_vdivsdzrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSDZrm_Intkz + %xmm0 = VDIVSDZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vdivsszrm_intkz_vdivsszrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivsszrm_intkz_vdivsszrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSSZrm_Intkz + %xmm0 = VDIVSSZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vexpandpdzrmk_vexpandpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vexpandpdzrmk_vexpandpdzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPDZrmk + %zmm0 = VEXPANDPDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vexpandpszrmk_vexpandpszrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vexpandpszrmk_vexpandpszrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPSZrmk + %zmm0 = VEXPANDPSZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vfixupimmpdzrmbi_vfixupimmpdzrrib_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdzrmbi_vfixupimmpdzrrib_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZrmbi + %zmm0 = VFIXUPIMMPDZrrib undef %zmm1, undef %zmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpdzrmi_vfixupimmpdzrri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdzrmi_vfixupimmpdzrri_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZrmi + %zmm0 = VFIXUPIMMPDZrri undef %zmm1, undef %zmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpszrmbi_vfixupimmpszrrib_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpszrmbi_vfixupimmpszrrib_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZrmbi + %zmm0 = VFIXUPIMMPSZrrib undef %zmm1, undef %zmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpszrmi_vfixupimmpszrri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpszrmi_vfixupimmpszrri_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZrmi + %zmm0 = VFIXUPIMMPSZrri undef %zmm1, undef %zmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmsdrmi_vfixupimmsdrri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmsdrmi_vfixupimmsdrri_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMSDrmi + %xmm0 = VFIXUPIMMSDrri undef %xmm1, undef %xmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmssrmi_vfixupimmssrri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmssrmi_vfixupimmssrri_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMSSrmi + %xmm0 = VFIXUPIMMSSrri undef %xmm1, undef %xmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vfmadd132pdzm_vfmadd132pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pdzm_vfmadd132pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PDZm + %zmm0 = VFMADD132PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132pszm_vfmadd132pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pszm_vfmadd132pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PSZm + %zmm0 = VFMADD132PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132sdzm_vfmadd132sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132sdzm_vfmadd132sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SDZm + %xmm0 = VFMADD132SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132sdzm_int_vfmadd132sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132sdzm_int_vfmadd132sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SDZm_Int + %xmm0 = VFMADD132SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132sszm_vfmadd132sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132sszm_vfmadd132sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SSZm + %xmm0 = VFMADD132SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132sszm_int_vfmadd132sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132sszm_int_vfmadd132sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SSZm_Int + %xmm0 = VFMADD132SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213pdzm_vfmadd213pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pdzm_vfmadd213pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PDZm + %zmm0 = VFMADD213PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213pszm_vfmadd213pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pszm_vfmadd213pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PSZm + %zmm0 = VFMADD213PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213sdzm_vfmadd213sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213sdzm_vfmadd213sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SDZm + %xmm0 = VFMADD213SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213sdzm_int_vfmadd213sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213sdzm_int_vfmadd213sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SDZm_Int + %xmm0 = VFMADD213SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213sszm_vfmadd213sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213sszm_vfmadd213sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SSZm + %xmm0 = VFMADD213SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213sszm_int_vfmadd213sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213sszm_int_vfmadd213sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SSZm_Int + %xmm0 = VFMADD213SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231pdzm_vfmadd231pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pdzm_vfmadd231pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PDZm + %zmm0 = VFMADD231PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231pszm_vfmadd231pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pszm_vfmadd231pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PSZm + %zmm0 = VFMADD231PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231sdzm_vfmadd231sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231sdzm_vfmadd231sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SDZm + %xmm0 = VFMADD231SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231sdzm_int_vfmadd231sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231sdzm_int_vfmadd231sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SDZm_Int + %xmm0 = VFMADD231SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231sszm_vfmadd231sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231sszm_vfmadd231sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SSZm + %xmm0 = VFMADD231SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231sszm_int_vfmadd231sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231sszm_int_vfmadd231sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SSZm_Int + %xmm0 = VFMADD231SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pdzm_vfmaddsub132pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pdzm_vfmaddsub132pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PDZm + %zmm0 = VFMADDSUB132PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pszm_vfmaddsub132pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pszm_vfmaddsub132pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PSZm + %zmm0 = VFMADDSUB132PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pdzm_vfmaddsub213pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pdzm_vfmaddsub213pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PDZm + %zmm0 = VFMADDSUB213PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pszm_vfmaddsub213pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pszm_vfmaddsub213pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PSZm + %zmm0 = VFMADDSUB213PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pdzm_vfmaddsub231pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pdzm_vfmaddsub231pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PDZm + %zmm0 = VFMADDSUB231PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pszm_vfmaddsub231pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pszm_vfmaddsub231pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PSZm + %zmm0 = VFMADDSUB231PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132pdzm_vfmsub132pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pdzm_vfmsub132pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PDZm + %zmm0 = VFMSUB132PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132pszm_vfmsub132pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pszm_vfmsub132pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PSZm + %zmm0 = VFMSUB132PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132sdzm_vfmsub132sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132sdzm_vfmsub132sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SDZm + %xmm0 = VFMSUB132SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132sdzm_int_vfmsub132sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132sdzm_int_vfmsub132sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SDZm_Int + %xmm0 = VFMSUB132SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132sszm_vfmsub132sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132sszm_vfmsub132sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SSZm + %xmm0 = VFMSUB132SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132sszm_int_vfmsub132sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132sszm_int_vfmsub132sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SSZm_Int + %xmm0 = VFMSUB132SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213pdzm_vfmsub213pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pdzm_vfmsub213pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PDZm + %zmm0 = VFMSUB213PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213pszm_vfmsub213pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pszm_vfmsub213pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PSZm + %zmm0 = VFMSUB213PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213sdzm_vfmsub213sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213sdzm_vfmsub213sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SDZm + %xmm0 = VFMSUB213SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213sdzm_int_vfmsub213sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213sdzm_int_vfmsub213sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SDZm_Int + %xmm0 = VFMSUB213SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213sszm_vfmsub213sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213sszm_vfmsub213sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SSZm + %xmm0 = VFMSUB213SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213sszm_int_vfmsub213sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213sszm_int_vfmsub213sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SSZm_Int + %xmm0 = VFMSUB213SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231pdzm_vfmsub231pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pdzm_vfmsub231pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PDZm + %zmm0 = VFMSUB231PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231pszm_vfmsub231pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pszm_vfmsub231pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PSZm + %zmm0 = VFMSUB231PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231sdzm_vfmsub231sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231sdzm_vfmsub231sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SDZm + %xmm0 = VFMSUB231SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231sdzm_int_vfmsub231sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231sdzm_int_vfmsub231sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SDZm_Int + %xmm0 = VFMSUB231SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231sszm_vfmsub231sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231sszm_vfmsub231sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SSZm + %xmm0 = VFMSUB231SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231sszm_int_vfmsub231sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231sszm_int_vfmsub231sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SSZm_Int + %xmm0 = VFMSUB231SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pdzm_vfmsubadd132pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pdzm_vfmsubadd132pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PDZm + %zmm0 = VFMSUBADD132PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pszm_vfmsubadd132pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pszm_vfmsubadd132pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PSZm + %zmm0 = VFMSUBADD132PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pdzm_vfmsubadd213pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pdzm_vfmsubadd213pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PDZm + %zmm0 = VFMSUBADD213PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pszm_vfmsubadd213pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pszm_vfmsubadd213pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PSZm + %zmm0 = VFMSUBADD213PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pdzm_vfmsubadd231pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pdzm_vfmsubadd231pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PDZm + %zmm0 = VFMSUBADD231PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pszm_vfmsubadd231pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pszm_vfmsubadd231pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PSZm + %zmm0 = VFMSUBADD231PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132pdzm_vfnmadd132pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pdzm_vfnmadd132pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PDZm + %zmm0 = VFNMADD132PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132pszm_vfnmadd132pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pszm_vfnmadd132pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PSZm + %zmm0 = VFNMADD132PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132sdzm_vfnmadd132sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132sdzm_vfnmadd132sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SDZm + %xmm0 = VFNMADD132SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132sdzm_int_vfnmadd132sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132sdzm_int_vfnmadd132sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SDZm_Int + %xmm0 = VFNMADD132SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132sszm_vfnmadd132sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132sszm_vfnmadd132sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SSZm + %xmm0 = VFNMADD132SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132sszm_int_vfnmadd132sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132sszm_int_vfnmadd132sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SSZm_Int + %xmm0 = VFNMADD132SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213pdzm_vfnmadd213pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pdzm_vfnmadd213pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PDZm + %zmm0 = VFNMADD213PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213pszm_vfnmadd213pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pszm_vfnmadd213pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PSZm + %zmm0 = VFNMADD213PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213sdzm_vfnmadd213sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213sdzm_vfnmadd213sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SDZm + %xmm0 = VFNMADD213SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213sdzm_int_vfnmadd213sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213sdzm_int_vfnmadd213sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SDZm_Int + %xmm0 = VFNMADD213SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213sszm_vfnmadd213sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213sszm_vfnmadd213sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SSZm + %xmm0 = VFNMADD213SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213sszm_int_vfnmadd213sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213sszm_int_vfnmadd213sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SSZm_Int + %xmm0 = VFNMADD213SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231pdzm_vfnmadd231pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pdzm_vfnmadd231pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PDZm + %zmm0 = VFNMADD231PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231pszm_vfnmadd231pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pszm_vfnmadd231pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PSZm + %zmm0 = VFNMADD231PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231sdzm_vfnmadd231sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231sdzm_vfnmadd231sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SDZm + %xmm0 = VFNMADD231SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231sdzm_int_vfnmadd231sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231sdzm_int_vfnmadd231sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SDZm_Int + %xmm0 = VFNMADD231SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231sszm_vfnmadd231sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231sszm_vfnmadd231sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SSZm + %xmm0 = VFNMADD231SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231sszm_int_vfnmadd231sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231sszm_int_vfnmadd231sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SSZm_Int + %xmm0 = VFNMADD231SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132pdzm_vfnmsub132pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pdzm_vfnmsub132pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PDZm + %zmm0 = VFNMSUB132PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132pszm_vfnmsub132pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pszm_vfnmsub132pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PSZm + %zmm0 = VFNMSUB132PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132sdzm_vfnmsub132sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132sdzm_vfnmsub132sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SDZm + %xmm0 = VFNMSUB132SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132sdzm_int_vfnmsub132sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132sdzm_int_vfnmsub132sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SDZm_Int + %xmm0 = VFNMSUB132SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132sszm_vfnmsub132sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132sszm_vfnmsub132sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SSZm + %xmm0 = VFNMSUB132SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132sszm_int_vfnmsub132sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132sszm_int_vfnmsub132sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SSZm_Int + %xmm0 = VFNMSUB132SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213pdzm_vfnmsub213pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pdzm_vfnmsub213pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PDZm + %zmm0 = VFNMSUB213PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213pszm_vfnmsub213pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pszm_vfnmsub213pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PSZm + %zmm0 = VFNMSUB213PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213sdzm_vfnmsub213sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213sdzm_vfnmsub213sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SDZm + %xmm0 = VFNMSUB213SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213sdzm_int_vfnmsub213sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213sdzm_int_vfnmsub213sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SDZm_Int + %xmm0 = VFNMSUB213SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213sszm_vfnmsub213sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213sszm_vfnmsub213sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SSZm + %xmm0 = VFNMSUB213SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213sszm_int_vfnmsub213sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213sszm_int_vfnmsub213sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SSZm_Int + %xmm0 = VFNMSUB213SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231pdzm_vfnmsub231pdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pdzm_vfnmsub231pdzr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PDZm + %zmm0 = VFNMSUB231PDZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231pszm_vfnmsub231pszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pszm_vfnmsub231pszr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PSZm + %zmm0 = VFNMSUB231PSZr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231sdzm_vfnmsub231sdzr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231sdzm_vfnmsub231sdzr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SDZm + %xmm0 = VFNMSUB231SDZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231sdzm_int_vfnmsub231sdzr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231sdzm_int_vfnmsub231sdzr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SDZm_Int + %xmm0 = VFNMSUB231SDZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231sszm_vfnmsub231sszr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231sszm_vfnmsub231sszr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SSZm + %xmm0 = VFNMSUB231SSZr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231sszm_int_vfnmsub231sszr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231sszm_int_vfnmsub231sszr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SSZm_Int + %xmm0 = VFNMSUB231SSZr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vgetexppdmbk_vgetexppdrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vgetexppdmbk_vgetexppdrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDmbk + %zmm0 = VGETEXPPDrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vgetexppdmk_vgetexppdrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vgetexppdmk_vgetexppdrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDmk + %zmm0 = VGETEXPPDrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vgetexppsmbk_vgetexppsrbk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vgetexppsmbk_vgetexppsrbk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSmbk + %zmm0 = VGETEXPPSrbk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vgetexppsmk_vgetexppsrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vgetexppsmk_vgetexppsrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSmk + %zmm0 = VGETEXPPSrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vgetexpsdmkz_vgetexpsdrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetexpsdmkz_vgetexpsdrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPSDmkz + %xmm0 = VGETEXPSDrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vgetexpssmkz_vgetexpssrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetexpssmkz_vgetexpssrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPSSmkz + %xmm0 = VGETEXPSSrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vgetmantpdzrmbik_vgetmantpdzrribk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdzrmbik_vgetmantpdzrribk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZrmbik + %zmm0 = VGETMANTPDZrribk undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpdzrmik_vgetmantpdzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdzrmik_vgetmantpdzrrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZrmik + %zmm0 = VGETMANTPDZrrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpszrmbik_vgetmantpszrribk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantpszrmbik_vgetmantpszrribk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZrmbik + %zmm0 = VGETMANTPSZrribk undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpszrmik_vgetmantpszrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantpszrmik_vgetmantpszrrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZrmik + %zmm0 = VGETMANTPSZrrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vgetmantsdz128rmikz_vgetmantsdz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantsdz128rmikz_vgetmantsdz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTSDZ128rmikz + %xmm0 = VGETMANTSDZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vgetmantssz128rmikz_vgetmantssz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantssz128rmikz_vgetmantssz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTSSZ128rmikz + %xmm0 = VGETMANTSSZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vinsertf32x4zrmkz_vinsertf32x4zrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf32x4zrmkz_vinsertf32x4zrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF32x4Zrmkz + %zmm0 = VINSERTF32x4Zrrkz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vinsertf64x4zrmkz_vinsertf64x4zrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf64x4zrmkz_vinsertf64x4zrrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF64x4Zrmkz + %zmm0 = VINSERTF64x4Zrrkz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vinserti32x4zrmkz_vinserti32x4zrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinserti32x4zrmkz_vinserti32x4zrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI32x4Zrmkz + %zmm0 = VINSERTI32x4Zrrkz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vinserti64x4zrmkz_vinserti64x4zrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vinserti64x4zrmkz_vinserti64x4zrrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI64x4Zrmkz + %zmm0 = VINSERTI64x4Zrrkz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vmaxcpdzrmbkz_vmaxpdzrbkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdzrmbkz_vmaxpdzrbkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZrmbkz + %zmm0 = VMAXPDZrbkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxcpdzrmkz_vmaxcpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdzrmkz_vmaxcpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZrmkz + %zmm0 = VMAXCPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxcpszrmbkz_vmaxpszrbkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpszrmbkz_vmaxpszrbkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZrmbkz + %zmm0 = VMAXPSZrbkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxcpszrmkz_vmaxcpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpszrmkz_vmaxcpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZrmkz + %zmm0 = VMAXCPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxpdzrmkz_vmaxpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpdzrmkz_vmaxpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPDZrmkz + %zmm0 = VMAXPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxpszrmkz_vmaxpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpszrmkz_vmaxpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPSZrmkz + %zmm0 = VMAXPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxsdzrm_intkz_vmaxsdzrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxsdzrm_intkz_vmaxsdzrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSDZrm_Intkz + %xmm0 = VMAXSDZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxsszrm_intkz_vmaxsszrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxsszrm_intkz_vmaxsszrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSSZrm_Intkz + %xmm0 = VMAXSSZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmincpdzrmbkz_vminpdzrbkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpdzrmbkz_vminpdzrbkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZrmbkz + %zmm0 = VMINPDZrbkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vmincpdzrmkz_vmincpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpdzrmkz_vmincpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZrmkz + %zmm0 = VMINCPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vmincpszrmbkz_vminpszrbkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpszrmbkz_vminpszrbkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZrmbkz + %zmm0 = VMINPSZrbkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vmincpszrmkz_vmincpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpszrmkz_vmincpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZrmkz + %zmm0 = VMINCPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vminpdzrmkz_vminpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vminpdzrmkz_vminpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPDZrmkz + %zmm0 = VMINPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vminpszrmkz_vminpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vminpszrmkz_vminpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPSZrmkz + %zmm0 = VMINPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vminsdzrm_intkz_vminsdzrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminsdzrm_intkz_vminsdzrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSDZrm_Intkz + %xmm0 = VMINSDZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vminsszrm_intkz_vminsszrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminsszrm_intkz_vminsszrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSSZrm_Intkz + %xmm0 = VMINSSZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmovapdzrmk_vmovapdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovapdzrmk_vmovapdzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPDZrmk + %zmm0 = VMOVAPDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovapszrmk_vmovapszrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovapszrmk_vmovapszrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPSZrmk + %zmm0 = VMOVAPSZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovddupzrmk_vmovddupzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovddupzrmk_vmovddupzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDDUPZrmk + %zmm0 = VMOVDDUPZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqa32zrmk_vmovdqa32zrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqa32zrmk_vmovdqa32zrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA32Zrmk + %zmm0 = VMOVDQA32Zrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqa64zrmk_vmovdqa64zrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqa64zrmk_vmovdqa64zrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA64Zrmk + %zmm0 = VMOVDQA64Zrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqu32zrmk_vmovdqu32zrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu32zrmk_vmovdqu32zrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU32Zrmk + %zmm0 = VMOVDQU32Zrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqu64zrmk_vmovdqu64zrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu64zrmk_vmovdqu64zrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU64Zrmk + %zmm0 = VMOVDQU64Zrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovshdupzrmk_vmovshdupzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovshdupzrmk_vmovshdupzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSHDUPZrmk + %zmm0 = VMOVSHDUPZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovsldupzrmk_vmovsldupzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovsldupzrmk_vmovsldupzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSLDUPZrmk + %zmm0 = VMOVSLDUPZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovupdzrmk_vmovupdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovupdzrmk_vmovupdzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPDZrmk + %zmm0 = VMOVUPDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovupszrmk_vmovupszrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmovupszrmk_vmovupszrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPSZrmk + %zmm0 = VMOVUPSZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmulpdzrmkz_vmulpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmulpdzrmkz_vmulpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPDZrmkz + %zmm0 = VMULPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vmulpszrmkz_vmulpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vmulpszrmkz_vmulpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPSZrmkz + %zmm0 = VMULPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vmulsdzrm_intkz_vmulsdzrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulsdzrm_intkz_vmulsdzrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSDZrm_Intkz + %xmm0 = VMULSDZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmulsszrm_intkz_vmulsszrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulsszrm_intkz_vmulsszrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSSZrm_Intkz + %xmm0 = VMULSSZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpabsdzrmk_vpabsdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpabsdzrmk_vpabsdzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSDZrmk + %zmm0 = VPABSDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpabsqzrmk_vpabsqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpabsqzrmk_vpabsqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSQZrmk + %zmm0 = VPABSQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpadddzrmkz_vpadddzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpadddzrmkz_vpadddzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDDZrmkz + %zmm0 = VPADDDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddqzrmkz_vpaddqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddqzrmkz_vpaddqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDQZrmkz + %zmm0 = VPADDQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpanddzrmkz_vpanddzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpanddzrmkz_vpanddzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDDZrmkz + %zmm0 = VPANDDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpandndzrmkz_vpandndzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpandndzrmkz_vpandndzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNDZrmkz + %zmm0 = VPANDNDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpandnqzrmkz_vpandnqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpandnqzrmkz_vpandnqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNQZrmkz + %zmm0 = VPANDNQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpandqzrmkz_vpandqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpandqzrmkz_vpandqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDQZrmkz + %zmm0 = VPANDQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmdzrmk_vpblendmdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmdzrmk_vpblendmdzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMDZrmk + %zmm0 = VPBLENDMDZrrk undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmdzrmkz_vpblendmdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmdzrmkz_vpblendmdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMDZrmkz + %zmm0 = VPBLENDMDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmqzrmk_vpblendmqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmqzrmk_vpblendmqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMQZrmk + %zmm0 = VPBLENDMQZrrk undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmqzrmkz_vpblendmqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmqzrmkz_vpblendmqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMQZrmkz + %zmm0 = VPBLENDMQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastdzmk_vpbroadcastdzrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastdzmk_vpbroadcastdzrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTDZmk + %zmm0 = VPBROADCASTDZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastqzmk_vpbroadcastqzrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastqzmk_vpbroadcastqzrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTQZmk + %zmm0 = VPBROADCASTQZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpcmpdzrmik_vpcmpdzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdzrmik_vpcmpdzrrik_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZrmik + %k1 = VPCMPDZrrik undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpdzrmik_alt_vpcmpdzrrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdzrmik_alt_vpcmpdzrrik_alt_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZrmik_alt + %k1 = VPCMPDZrrik_alt undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpeqdzrmk_vpcmpeqdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqdzrmk_vpcmpeqdzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQDZrmk + %k1 = VPCMPEQDZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpeqqzrmk_vpcmpeqqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqqzrmk_vpcmpeqqzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQQZrmk + %k1 = VPCMPEQQZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtdzrmk_vpcmpgtdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtdzrmk_vpcmpgtdzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTDZrmk + %k1 = VPCMPGTDZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtqzrmk_vpcmpgtqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtqzrmk_vpcmpgtqzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTQZrmk + %k1 = VPCMPGTQZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpqzrmik_vpcmpqzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqzrmik_vpcmpqzrrik_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZrmik + %k1 = VPCMPQZrrik undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpqzrmik_alt_vpcmpqzrrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqzrmik_alt_vpcmpqzrrik_alt_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZrmik_alt + %k1 = VPCMPQZrrik_alt undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudzrmik_vpcmpudzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudzrmik_vpcmpudzrrik_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZrmik + %k1 = VPCMPUDZrrik undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudzrmik_alt_vpcmpudzrrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudzrmik_alt_vpcmpudzrrik_alt_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZrmik_alt + %k1 = VPCMPUDZrrik_alt undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqzrmik_vpcmpuqzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqzrmik_vpcmpuqzrrik_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZrmik + %k1 = VPCMPUQZrrik undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqzrmik_alt_vpcmpuqzrrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqzrmik_alt_vpcmpuqzrrik_alt_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZrmik_alt + %k1 = VPCMPUQZrrik_alt undef %k2, undef %zmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermdzrmkz_vpermdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermdzrmkz_vpermdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMDZrmkz + %zmm0 = VPERMDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpermi2drm_vpermi2drr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2drm_vpermi2drr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Drm + %zmm0 = VPERMI2Drr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2pdrm_vpermi2pdrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2pdrm_vpermi2pdrr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PDrm + %zmm0 = VPERMI2PDrr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2psrm_vpermi2psrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2psrm_vpermi2psrr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PSrm + %zmm0 = VPERMI2PSrr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2qrm_vpermi2qrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2qrm_vpermi2qrr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Qrm + %zmm0 = VPERMI2Qrr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermilpdzmik_vpermilpdzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpdzmik_vpermilpdzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZmik + %zmm0 = VPERMILPDZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermilpdzrmkz_vpermilpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpdzrmkz_vpermilpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZrmkz + %zmm0 = VPERMILPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpermilpszmik_vpermilpszrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpszmik_vpermilpszrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZmik + %zmm0 = VPERMILPSZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermilpszrmkz_vpermilpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpszrmkz_vpermilpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZrmkz + %zmm0 = VPERMILPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpermpdzmik_vpermpdzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermpdzmik_vpermpdzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZmik + %zmm0 = VPERMPDZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermpdzrmkz_vpermpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermpdzrmkz_vpermpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZrmkz + %zmm0 = VPERMPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpermpszrmkz_vpermpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermpszrmkz_vpermpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPSZrmkz + %zmm0 = VPERMPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpermqzmik_vpermqzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermqzmik_vpermqzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZmik + %zmm0 = VPERMQZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermqzrmkz_vpermqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpermqzrmkz_vpermqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZrmkz + %zmm0 = VPERMQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpermt2drm_vpermt2drr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2drm_vpermt2drr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Drm + %zmm0 = VPERMT2Drr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2pdrm_vpermt2pdrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2pdrm_vpermt2pdrr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PDrm + %zmm0 = VPERMT2PDrr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2psrm_vpermt2psrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2psrm_vpermt2psrr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PSrm + %zmm0 = VPERMT2PSrr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2qrm_vpermt2qrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2qrm_vpermt2qrr_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Qrm + %zmm0 = VPERMT2Qrr undef %zmm1, undef %zmm2, %3 + RET 0 +... +--- +name: stack_fold_vpexpanddzrmk_vpexpanddzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpexpanddzrmk_vpexpanddzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDDZrmk + %zmm0 = VPEXPANDDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpexpandqzrmk_vpexpandqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpexpandqzrmk_vpexpandqzrrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDQZrmk + %zmm0 = VPEXPANDQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxsdzrmkz_vpmaxsdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsdzrmkz_vpmaxsdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSDZrmkz + %zmm0 = VPMAXSDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxsqzrmkz_vpmaxsqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsqzrmkz_vpmaxsqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSQZrmkz + %zmm0 = VPMAXSQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxudzrmkz_vpmaxudzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxudzrmkz_vpmaxudzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUDZrmkz + %zmm0 = VPMAXUDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxuqzrmkz_vpmaxuqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuqzrmkz_vpmaxuqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUQZrmkz + %zmm0 = VPMAXUQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminsdzrmkz_vpminsdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsdzrmkz_vpminsdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSDZrmkz + %zmm0 = VPMINSDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminsqzrmkz_vpminsqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsqzrmkz_vpminsqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSQZrmkz + %zmm0 = VPMINSQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminudzrmkz_vpminudzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminudzrmkz_vpminudzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUDZrmkz + %zmm0 = VPMINUDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminuqzrmkz_vpminuqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpminuqzrmkz_vpminuqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUQZrmkz + %zmm0 = VPMINUQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxbdzrmk_vpmovsxbdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbdzrmk_vpmovsxbdzrrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBDZrmk + %zmm0 = VPMOVSXBDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxbqzrmk_vpmovsxbqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbqzrmk_vpmovsxbqzrrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBQZrmk + %zmm0 = VPMOVSXBQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxdqzrmk_vpmovsxdqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxdqzrmk_vpmovsxdqzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXDQZrmk + %zmm0 = VPMOVSXDQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxwdzrmk_vpmovsxwdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwdzrmk_vpmovsxwdzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWDZrmk + %zmm0 = VPMOVSXWDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxwqzrmk_vpmovsxwqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwqzrmk_vpmovsxwqzrrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWQZrmk + %zmm0 = VPMOVSXWQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxbdzrmk_vpmovzxbdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbdzrmk_vpmovzxbdzrrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBDZrmk + %zmm0 = VPMOVZXBDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxbqzrmk_vpmovzxbqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbqzrmk_vpmovzxbqzrrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBQZrmk + %zmm0 = VPMOVZXBQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxdqzrmk_vpmovzxdqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxdqzrmk_vpmovzxdqzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXDQZrmk + %zmm0 = VPMOVZXDQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxwdzrmk_vpmovzxwdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwdzrmk_vpmovzxwdzrrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWDZrmk + %zmm0 = VPMOVZXWDZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxwqzrmk_vpmovzxwqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwqzrmk_vpmovzxwqzrrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWQZrmk + %zmm0 = VPMOVZXWQZrrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmuldqzrmkz_vpmuldqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmuldqzrmkz_vpmuldqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULDQZrmkz + %zmm0 = VPMULDQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmulldzrmkz_vpmulldzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulldzrmkz_vpmulldzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLDZrmkz + %zmm0 = VPMULLDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmuludqzrmkz_vpmuludqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpmuludqzrmkz_vpmuludqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULUDQZrmkz + %zmm0 = VPMULUDQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpordzrmkz_vpordzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpordzrmkz_vpordzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORDZrmkz + %zmm0 = VPORDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vporqzrmkz_vporqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vporqzrmkz_vporqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORQZrmkz + %zmm0 = VPORQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vproldzmik_vproldzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vproldzmik_vproldzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLDZmik + %zmm0 = VPROLDZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vprolqzmik_vprolqzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vprolqzmik_vprolqzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLQZmik + %zmm0 = VPROLQZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vprolvdzrmkz_vprolvdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vprolvdzrmkz_vprolvdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVDZrmkz + %zmm0 = VPROLVDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vprolvqzrmkz_vprolvqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vprolvqzrmkz_vprolvqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVQZrmkz + %zmm0 = VPROLVQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vprordzmik_vprordzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vprordzmik_vprordzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORDZmik + %zmm0 = VPRORDZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vprorqzmik_vprorqzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vprorqzmik_vprorqzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORQZmik + %zmm0 = VPRORQZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vprorvdzrmkz_vprorvdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vprorvdzrmkz_vprorvdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVDZrmkz + %zmm0 = VPRORVDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vprorvqzrmkz_vprorvqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vprorvqzrmkz_vprorvqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVQZrmkz + %zmm0 = VPRORVQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpshufdzmik_vpshufdzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpshufdzmik_vpshufdzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFDZmik + %zmm0 = VPSHUFDZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpslldzmik_vpslldzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpslldzmik_vpslldzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZmik + %zmm0 = VPSLLDZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpslldzrmkz_vpslldzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpslldzrmkz_vpslldzrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZrmkz + %zmm0 = VPSLLDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllqzmik_vpsllqzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllqzmik_vpsllqzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZmik + %zmm0 = VPSLLQZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsllqzrmkz_vpsllqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllqzrmkz_vpsllqzrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZrmkz + %zmm0 = VPSLLQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllvdzrmkz_vpsllvdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvdzrmkz_vpsllvdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVDZrmkz + %zmm0 = VPSLLVDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllvqzrmkz_vpsllvqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvqzrmkz_vpsllvqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVQZrmkz + %zmm0 = VPSLLVQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsradzmik_vpsradzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsradzmik_vpsradzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZmik + %zmm0 = VPSRADZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsradzrmkz_vpsradzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsradzrmkz_vpsradzrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZrmkz + %zmm0 = VPSRADZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsraqzmik_vpsraqzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsraqzmik_vpsraqzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZmik + %zmm0 = VPSRAQZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsraqzrmkz_vpsraqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsraqzrmkz_vpsraqzrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZrmkz + %zmm0 = VPSRAQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsravdzrmkz_vpsravdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravdzrmkz_vpsravdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVDZrmkz + %zmm0 = VPSRAVDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsravqzrmkz_vpsravqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravqzrmkz_vpsravqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVQZrmkz + %zmm0 = VPSRAVQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrldzmik_vpsrldzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrldzmik_vpsrldzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZmik + %zmm0 = VPSRLDZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrldzrmkz_vpsrldzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrldzrmkz_vpsrldzrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZrmkz + %zmm0 = VPSRLDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlqzmik_vpsrlqzrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlqzmik_vpsrlqzrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZmik + %zmm0 = VPSRLQZrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrlqzrmkz_vpsrlqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlqzrmkz_vpsrlqzrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZrmkz + %zmm0 = VPSRLQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlvdzrmkz_vpsrlvdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvdzrmkz_vpsrlvdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVDZrmkz + %zmm0 = VPSRLVDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlvqzrmkz_vpsrlvqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvqzrmkz_vpsrlvqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVQZrmkz + %zmm0 = VPSRLVQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubdzrmkz_vpsubdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubdzrmkz_vpsubdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBDZrmkz + %zmm0 = VPSUBDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubqzrmkz_vpsubqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubqzrmkz_vpsubqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBQZrmkz + %zmm0 = VPSUBQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpternlogdzrmi_vpternlogdzrri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogdzrmi_vpternlogdzrri_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGDZrmi + %zmm0 = VPTERNLOGDZrri undef %zmm1, undef %zmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vpternlogqzrmi_vpternlogqzrri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogqzrmi_vpternlogqzrri_test + %3 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGQZrmi + %zmm0 = VPTERNLOGQZrri undef %zmm1, undef %zmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vptestmdzrmk_vptestmdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmdzrmk_vptestmdzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMDZrmk + %k1 = VPTESTMDZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestmqzrmk_vptestmqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmqzrmk_vptestmqzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMQZrmk + %k1 = VPTESTMQZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmdzrmk_vptestnmdzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmdzrmk_vptestnmdzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMDZrmk + %k1 = VPTESTNMDZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmqzrmk_vptestnmqzrrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmqzrmk_vptestnmqzrrk_test + %3 = COPY %zmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMQZrmk + %k1 = VPTESTNMQZrrk undef %k2, undef %zmm0, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhdqzrmkz_vpunpckhdqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhdqzrmkz_vpunpckhdqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHDQZrmkz + %zmm0 = VPUNPCKHDQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhqdqzrmkz_vpunpckhqdqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhqdqzrmkz_vpunpckhqdqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHQDQZrmkz + %zmm0 = VPUNPCKHQDQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckldqzrmkz_vpunpckldqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckldqzrmkz_vpunpckldqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLDQZrmkz + %zmm0 = VPUNPCKLDQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpcklqdqzrmkz_vpunpcklqdqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklqdqzrmkz_vpunpcklqdqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLQDQZrmkz + %zmm0 = VPUNPCKLQDQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpxordzrmkz_vpxordzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpxordzrmkz_vpxordzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORDZrmkz + %zmm0 = VPXORDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vpxorqzrmkz_vpxorqzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vpxorqzrmkz_vpxorqzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORQZrmkz + %zmm0 = VPXORQZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vrcp14pdzmk_vrcp14pdzrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp14pdzmk_vrcp14pdzrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PDZmk + %zmm0 = VRCP14PDZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrcp14pszmk_vrcp14pszrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp14pszmk_vrcp14pszrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PSZmk + %zmm0 = VRCP14PSZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrcp14sdrmkz_vrcp14sdrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp14sdrmkz_vrcp14sdrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14SDrmkz + %xmm0 = VRCP14SDrrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vrcp14ssrmkz_vrcp14ssrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp14ssrmkz_vrcp14ssrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14SSrmkz + %xmm0 = VRCP14SSrrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vrndscalepdzrmbik_vrndscalepdzrribk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdzrmbik_vrndscalepdzrribk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZrmbik + %zmm0 = VRNDSCALEPDZrribk undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepdzrmik_vrndscalepdzrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdzrmik_vrndscalepdzrrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZrmik + %zmm0 = VRNDSCALEPDZrrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepszrmbik_vrndscalepszrribk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalepszrmbik_vrndscalepszrribk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZrmbik + %zmm0 = VRNDSCALEPSZrribk undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepszrmik_vrndscalepszrrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalepszrmik_vrndscalepszrrik_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZrmik + %zmm0 = VRNDSCALEPSZrrik undef %zmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrndscalesdmkz_vrndscalesdrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalesdmkz_vrndscalesdrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALESDmkz + %xmm0 = VRNDSCALESDrkz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrndscalessmkz_vrndscalessrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalessmkz_vrndscalessrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALESSmkz + %xmm0 = VRNDSCALESSrkz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrsqrt14pdzmk_vrsqrt14pdzrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pdzmk_vrsqrt14pdzrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PDZmk + %zmm0 = VRSQRT14PDZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrsqrt14pszmk_vrsqrt14pszrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pszmk_vrsqrt14pszrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PSZmk + %zmm0 = VRSQRT14PSZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrsqrt14sdrmkz_vrsqrt14sdrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14sdrmkz_vrsqrt14sdrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14SDrmkz + %xmm0 = VRSQRT14SDrrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vrsqrt14ssrmkz_vrsqrt14ssrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14ssrmkz_vrsqrt14ssrrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14SSrmkz + %xmm0 = VRSQRT14SSrrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vscalefpdzrmkz_vscalefpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpdzrmkz_vscalefpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPDZrmkz + %zmm0 = VSCALEFPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vscalefpszrmkz_vscalefpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpszrmkz_vscalefpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPSZrmkz + %zmm0 = VSCALEFPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vscalefsdz128rmkz_vscalefsdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefsdz128rmkz_vscalefsdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFSDZ128rmkz + %xmm0 = VSCALEFSDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vscalefssz128rmkz_vscalefssz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefssz128rmkz_vscalefssz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFSSZ128rmkz + %xmm0 = VSCALEFSSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vshuff32x4zrmikz_vshuff32x4zrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshuff32x4zrmikz_vshuff32x4zrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF32X4Zrmikz + %zmm0 = VSHUFF32X4Zrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshuff64x2zrmikz_vshuff64x2zrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshuff64x2zrmikz_vshuff64x2zrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF64X2Zrmikz + %zmm0 = VSHUFF64X2Zrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshufi32x4zrmikz_vshufi32x4zrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshufi32x4zrmikz_vshufi32x4zrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI32X4Zrmikz + %zmm0 = VSHUFI32X4Zrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshufi64x2zrmikz_vshufi64x2zrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshufi64x2zrmikz_vshufi64x2zrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI64X2Zrmikz + %zmm0 = VSHUFI64X2Zrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshufpdzrmikz_vshufpdzrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshufpdzrmikz_vshufpdzrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPDZrmikz + %zmm0 = VSHUFPDZrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshufpszrmikz_vshufpszrrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vshufpszrmikz_vshufpszrrikz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPSZrmikz + %zmm0 = VSHUFPSZrrikz undef %k1, undef %zmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vsqrtpdzmk_vsqrtpdzrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vsqrtpdzmk_vsqrtpdzrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPDZmk + %zmm0 = VSQRTPDZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vsqrtpszmk_vsqrtpszrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vsqrtpszmk_vsqrtpszrk_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPSZmk + %zmm0 = VSQRTPSZrk undef %zmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vsubpdzrmkz_vsubpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vsubpdzrmkz_vsubpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPDZrmkz + %zmm0 = VSUBPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vsubpszrmkz_vsubpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vsubpszrmkz_vsubpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPSZrmkz + %zmm0 = VSUBPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vsubsdzrm_intkz_vsubsdzrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubsdzrm_intkz_vsubsdzrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSDZrm_Intkz + %xmm0 = VSUBSDZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vsubsszrm_intkz_vsubsszrr_intkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubsszrm_intkz_vsubsszrr_intkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSSZrm_Intkz + %xmm0 = VSUBSSZrr_Intkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vunpckhpdzrmkz_vunpckhpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpdzrmkz_vunpckhpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPDZrmkz + %zmm0 = VUNPCKHPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vunpckhpszrmkz_vunpckhpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpszrmkz_vunpckhpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPSZrmkz + %zmm0 = VUNPCKHPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vunpcklpdzrmkz_vunpcklpdzrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpdzrmkz_vunpcklpdzrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPDZrmkz + %zmm0 = VUNPCKLPDZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vunpcklpszrmkz_vunpcklpszrrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr512 } +liveins: + - { reg: '%zmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpszrmkz_vunpcklpszrrkz_test + %3 = COPY %zmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPSZrmkz + %zmm0 = VUNPCKLPSZrrkz undef %k1, undef %zmm1, %3 + RET 0 +... +--- +name: stack_fold_vaddpdzrmk_vaddpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vaddpdzrmk_vaddpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPDZrmk + %zmm0 = VADDPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vaddpszrmk_vaddpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vaddpszrmk_vaddpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPSZrmk + %zmm0 = VADDPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vaddsdzrm_intk_vaddsdzrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vaddsdzrm_intk_vaddsdzrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSDZrm_Intk + %xmm0 = VADDSDZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vaddsszrm_intk_vaddsszrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vaddsszrm_intk_vaddsszrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDSSZrm_Intk + %xmm0 = VADDSSZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_valigndzrmik_valigndzrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_valigndzrmik_valigndzrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNDZrmik + %zmm0 = VALIGNDZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_valignqzrmik_valignqzrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_valignqzrmik_valignqzrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNQZrmik + %zmm0 = VALIGNQZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vdivpdzrmk_vdivpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vdivpdzrmk_vdivpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPDZrmk + %zmm0 = VDIVPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vdivpszrmk_vdivpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vdivpszrmk_vdivpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPSZrmk + %zmm0 = VDIVPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vdivsdzrm_intk_vdivsdzrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vdivsdzrm_intk_vdivsdzrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSDZrm_Intk + %xmm0 = VDIVSDZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vdivsszrm_intk_vdivsszrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vdivsszrm_intk_vdivsszrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVSSZrm_Intk + %xmm0 = VDIVSSZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfixupimmpdzrmbik_vfixupimmpdzrribk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdzrmbik_vfixupimmpdzrribk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZrmbik + %zmm0 = VFIXUPIMMPDZrribk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpdzrmbikz_vfixupimmpdzrribkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdzrmbikz_vfixupimmpdzrribkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZrmbikz + %zmm0 = VFIXUPIMMPDZrribkz undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpdzrmik_vfixupimmpdzrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdzrmik_vfixupimmpdzrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZrmik + %zmm0 = VFIXUPIMMPDZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpdzrmikz_vfixupimmpdzrrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdzrmikz_vfixupimmpdzrrikz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZrmikz + %zmm0 = VFIXUPIMMPDZrrikz undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpszrmbik_vfixupimmpszrribk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpszrmbik_vfixupimmpszrribk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZrmbik + %zmm0 = VFIXUPIMMPSZrribk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpszrmbikz_vfixupimmpszrribkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpszrmbikz_vfixupimmpszrribkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZrmbikz + %zmm0 = VFIXUPIMMPSZrribkz undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpszrmik_vfixupimmpszrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpszrmik_vfixupimmpszrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZrmik + %zmm0 = VFIXUPIMMPSZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpszrmikz_vfixupimmpszrrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpszrmikz_vfixupimmpszrrikz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZrmikz + %zmm0 = VFIXUPIMMPSZrrikz undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmsdrmik_vfixupimmsdrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmsdrmik_vfixupimmsdrrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMSDrmik + %xmm0 = VFIXUPIMMSDrrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmsdrmikz_vfixupimmsdrrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmsdrmikz_vfixupimmsdrrikz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMSDrmikz + %xmm0 = VFIXUPIMMSDrrikz undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmssrmik_vfixupimmssrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmssrmik_vfixupimmssrrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMSSrmik + %xmm0 = VFIXUPIMMSSrrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmssrmikz_vfixupimmssrrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmssrmikz_vfixupimmssrrikz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMSSrmikz + %xmm0 = VFIXUPIMMSSrrikz undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfmadd132pdzmk_vfmadd132pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pdzmk_vfmadd132pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PDZmk + %zmm0 = VFMADD132PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132pdzmkz_vfmadd132pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pdzmkz_vfmadd132pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PDZmkz + %zmm0 = VFMADD132PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132pszmk_vfmadd132pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pszmk_vfmadd132pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PSZmk + %zmm0 = VFMADD132PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132pszmkz_vfmadd132pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pszmkz_vfmadd132pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PSZmkz + %zmm0 = VFMADD132PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132sdzm_intk_vfmadd132sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132sdzm_intk_vfmadd132sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SDZm_Intk + %xmm0 = VFMADD132SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132sdzm_intkz_vfmadd132sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132sdzm_intkz_vfmadd132sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SDZm_Intkz + %xmm0 = VFMADD132SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132sszm_intk_vfmadd132sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132sszm_intk_vfmadd132sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SSZm_Intk + %xmm0 = VFMADD132SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132sszm_intkz_vfmadd132sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132sszm_intkz_vfmadd132sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SSZm_Intkz + %xmm0 = VFMADD132SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213pdzmk_vfmadd213pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pdzmk_vfmadd213pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PDZmk + %zmm0 = VFMADD213PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213pdzmkz_vfmadd213pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pdzmkz_vfmadd213pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PDZmkz + %zmm0 = VFMADD213PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213pszmk_vfmadd213pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pszmk_vfmadd213pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PSZmk + %zmm0 = VFMADD213PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213pszmkz_vfmadd213pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pszmkz_vfmadd213pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PSZmkz + %zmm0 = VFMADD213PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213sdzm_intk_vfmadd213sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213sdzm_intk_vfmadd213sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SDZm_Intk + %xmm0 = VFMADD213SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213sdzm_intkz_vfmadd213sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213sdzm_intkz_vfmadd213sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SDZm_Intkz + %xmm0 = VFMADD213SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213sszm_intk_vfmadd213sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213sszm_intk_vfmadd213sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SSZm_Intk + %xmm0 = VFMADD213SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213sszm_intkz_vfmadd213sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213sszm_intkz_vfmadd213sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SSZm_Intkz + %xmm0 = VFMADD213SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231pdzmk_vfmadd231pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pdzmk_vfmadd231pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PDZmk + %zmm0 = VFMADD231PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231pdzmkz_vfmadd231pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pdzmkz_vfmadd231pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PDZmkz + %zmm0 = VFMADD231PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231pszmk_vfmadd231pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pszmk_vfmadd231pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PSZmk + %zmm0 = VFMADD231PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231pszmkz_vfmadd231pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pszmkz_vfmadd231pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PSZmkz + %zmm0 = VFMADD231PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231sdzm_intk_vfmadd231sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231sdzm_intk_vfmadd231sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SDZm_Intk + %xmm0 = VFMADD231SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231sdzm_intkz_vfmadd231sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231sdzm_intkz_vfmadd231sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SDZm_Intkz + %xmm0 = VFMADD231SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231sszm_intk_vfmadd231sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231sszm_intk_vfmadd231sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SSZm_Intk + %xmm0 = VFMADD231SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231sszm_intkz_vfmadd231sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231sszm_intkz_vfmadd231sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SSZm_Intkz + %xmm0 = VFMADD231SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pdzmk_vfmaddsub132pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pdzmk_vfmaddsub132pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PDZmk + %zmm0 = VFMADDSUB132PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pdzmkz_vfmaddsub132pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pdzmkz_vfmaddsub132pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PDZmkz + %zmm0 = VFMADDSUB132PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pszmk_vfmaddsub132pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pszmk_vfmaddsub132pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PSZmk + %zmm0 = VFMADDSUB132PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pszmkz_vfmaddsub132pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pszmkz_vfmaddsub132pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PSZmkz + %zmm0 = VFMADDSUB132PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pdzmk_vfmaddsub213pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pdzmk_vfmaddsub213pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PDZmk + %zmm0 = VFMADDSUB213PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pdzmkz_vfmaddsub213pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pdzmkz_vfmaddsub213pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PDZmkz + %zmm0 = VFMADDSUB213PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pszmk_vfmaddsub213pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pszmk_vfmaddsub213pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PSZmk + %zmm0 = VFMADDSUB213PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pszmkz_vfmaddsub213pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pszmkz_vfmaddsub213pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PSZmkz + %zmm0 = VFMADDSUB213PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pdzmk_vfmaddsub231pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pdzmk_vfmaddsub231pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PDZmk + %zmm0 = VFMADDSUB231PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pdzmkz_vfmaddsub231pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pdzmkz_vfmaddsub231pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PDZmkz + %zmm0 = VFMADDSUB231PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pszmk_vfmaddsub231pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pszmk_vfmaddsub231pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PSZmk + %zmm0 = VFMADDSUB231PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pszmkz_vfmaddsub231pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pszmkz_vfmaddsub231pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PSZmkz + %zmm0 = VFMADDSUB231PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132pdzmk_vfmsub132pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pdzmk_vfmsub132pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PDZmk + %zmm0 = VFMSUB132PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132pdzmkz_vfmsub132pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pdzmkz_vfmsub132pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PDZmkz + %zmm0 = VFMSUB132PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132pszmk_vfmsub132pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pszmk_vfmsub132pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PSZmk + %zmm0 = VFMSUB132PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132pszmkz_vfmsub132pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pszmkz_vfmsub132pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PSZmkz + %zmm0 = VFMSUB132PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132sdzm_intk_vfmsub132sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132sdzm_intk_vfmsub132sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SDZm_Intk + %xmm0 = VFMSUB132SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132sdzm_intkz_vfmsub132sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132sdzm_intkz_vfmsub132sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SDZm_Intkz + %xmm0 = VFMSUB132SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132sszm_intk_vfmsub132sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132sszm_intk_vfmsub132sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SSZm_Intk + %xmm0 = VFMSUB132SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132sszm_intkz_vfmsub132sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132sszm_intkz_vfmsub132sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SSZm_Intkz + %xmm0 = VFMSUB132SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213pdzmk_vfmsub213pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pdzmk_vfmsub213pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PDZmk + %zmm0 = VFMSUB213PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213pdzmkz_vfmsub213pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pdzmkz_vfmsub213pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PDZmkz + %zmm0 = VFMSUB213PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213pszmk_vfmsub213pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pszmk_vfmsub213pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PSZmk + %zmm0 = VFMSUB213PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213pszmkz_vfmsub213pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pszmkz_vfmsub213pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PSZmkz + %zmm0 = VFMSUB213PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213sdzm_intk_vfmsub213sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213sdzm_intk_vfmsub213sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SDZm_Intk + %xmm0 = VFMSUB213SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213sdzm_intkz_vfmsub213sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213sdzm_intkz_vfmsub213sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SDZm_Intkz + %xmm0 = VFMSUB213SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213sszm_intk_vfmsub213sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213sszm_intk_vfmsub213sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SSZm_Intk + %xmm0 = VFMSUB213SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213sszm_intkz_vfmsub213sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213sszm_intkz_vfmsub213sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SSZm_Intkz + %xmm0 = VFMSUB213SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231pdzmk_vfmsub231pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pdzmk_vfmsub231pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PDZmk + %zmm0 = VFMSUB231PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231pdzmkz_vfmsub231pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pdzmkz_vfmsub231pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PDZmkz + %zmm0 = VFMSUB231PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231pszmk_vfmsub231pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pszmk_vfmsub231pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PSZmk + %zmm0 = VFMSUB231PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231pszmkz_vfmsub231pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pszmkz_vfmsub231pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PSZmkz + %zmm0 = VFMSUB231PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231sdzm_intk_vfmsub231sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231sdzm_intk_vfmsub231sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SDZm_Intk + %xmm0 = VFMSUB231SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231sdzm_intkz_vfmsub231sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231sdzm_intkz_vfmsub231sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SDZm_Intkz + %xmm0 = VFMSUB231SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231sszm_intk_vfmsub231sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231sszm_intk_vfmsub231sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SSZm_Intk + %xmm0 = VFMSUB231SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231sszm_intkz_vfmsub231sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231sszm_intkz_vfmsub231sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SSZm_Intkz + %xmm0 = VFMSUB231SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pdzmk_vfmsubadd132pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pdzmk_vfmsubadd132pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PDZmk + %zmm0 = VFMSUBADD132PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pdzmkz_vfmsubadd132pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pdzmkz_vfmsubadd132pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PDZmkz + %zmm0 = VFMSUBADD132PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pszmk_vfmsubadd132pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pszmk_vfmsubadd132pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PSZmk + %zmm0 = VFMSUBADD132PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pszmkz_vfmsubadd132pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pszmkz_vfmsubadd132pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PSZmkz + %zmm0 = VFMSUBADD132PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pdzmk_vfmsubadd213pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pdzmk_vfmsubadd213pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PDZmk + %zmm0 = VFMSUBADD213PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pdzmkz_vfmsubadd213pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pdzmkz_vfmsubadd213pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PDZmkz + %zmm0 = VFMSUBADD213PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pszmk_vfmsubadd213pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pszmk_vfmsubadd213pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PSZmk + %zmm0 = VFMSUBADD213PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pszmkz_vfmsubadd213pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pszmkz_vfmsubadd213pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PSZmkz + %zmm0 = VFMSUBADD213PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pdzmk_vfmsubadd231pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pdzmk_vfmsubadd231pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PDZmk + %zmm0 = VFMSUBADD231PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pdzmkz_vfmsubadd231pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pdzmkz_vfmsubadd231pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PDZmkz + %zmm0 = VFMSUBADD231PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pszmk_vfmsubadd231pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pszmk_vfmsubadd231pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PSZmk + %zmm0 = VFMSUBADD231PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pszmkz_vfmsubadd231pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pszmkz_vfmsubadd231pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PSZmkz + %zmm0 = VFMSUBADD231PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132pdzmk_vfnmadd132pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pdzmk_vfnmadd132pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PDZmk + %zmm0 = VFNMADD132PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132pdzmkz_vfnmadd132pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pdzmkz_vfnmadd132pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PDZmkz + %zmm0 = VFNMADD132PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132pszmk_vfnmadd132pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pszmk_vfnmadd132pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PSZmk + %zmm0 = VFNMADD132PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132pszmkz_vfnmadd132pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pszmkz_vfnmadd132pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PSZmkz + %zmm0 = VFNMADD132PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132sdzm_intk_vfnmadd132sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132sdzm_intk_vfnmadd132sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SDZm_Intk + %xmm0 = VFNMADD132SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132sdzm_intkz_vfnmadd132sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132sdzm_intkz_vfnmadd132sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SDZm_Intkz + %xmm0 = VFNMADD132SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132sszm_intk_vfnmadd132sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132sszm_intk_vfnmadd132sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SSZm_Intk + %xmm0 = VFNMADD132SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132sszm_intkz_vfnmadd132sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132sszm_intkz_vfnmadd132sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SSZm_Intkz + %xmm0 = VFNMADD132SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213pdzmk_vfnmadd213pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pdzmk_vfnmadd213pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PDZmk + %zmm0 = VFNMADD213PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213pdzmkz_vfnmadd213pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pdzmkz_vfnmadd213pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PDZmkz + %zmm0 = VFNMADD213PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213pszmk_vfnmadd213pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pszmk_vfnmadd213pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PSZmk + %zmm0 = VFNMADD213PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213pszmkz_vfnmadd213pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pszmkz_vfnmadd213pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PSZmkz + %zmm0 = VFNMADD213PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213sdzm_intk_vfnmadd213sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213sdzm_intk_vfnmadd213sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SDZm_Intk + %xmm0 = VFNMADD213SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213sdzm_intkz_vfnmadd213sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213sdzm_intkz_vfnmadd213sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SDZm_Intkz + %xmm0 = VFNMADD213SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213sszm_intk_vfnmadd213sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213sszm_intk_vfnmadd213sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SSZm_Intk + %xmm0 = VFNMADD213SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213sszm_intkz_vfnmadd213sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213sszm_intkz_vfnmadd213sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SSZm_Intkz + %xmm0 = VFNMADD213SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231pdzmk_vfnmadd231pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pdzmk_vfnmadd231pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PDZmk + %zmm0 = VFNMADD231PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231pdzmkz_vfnmadd231pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pdzmkz_vfnmadd231pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PDZmkz + %zmm0 = VFNMADD231PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231pszmk_vfnmadd231pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pszmk_vfnmadd231pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PSZmk + %zmm0 = VFNMADD231PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231pszmkz_vfnmadd231pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pszmkz_vfnmadd231pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PSZmkz + %zmm0 = VFNMADD231PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231sdzm_intk_vfnmadd231sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231sdzm_intk_vfnmadd231sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SDZm_Intk + %xmm0 = VFNMADD231SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231sdzm_intkz_vfnmadd231sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231sdzm_intkz_vfnmadd231sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SDZm_Intkz + %xmm0 = VFNMADD231SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231sszm_intk_vfnmadd231sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231sszm_intk_vfnmadd231sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SSZm_Intk + %xmm0 = VFNMADD231SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231sszm_intkz_vfnmadd231sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231sszm_intkz_vfnmadd231sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SSZm_Intkz + %xmm0 = VFNMADD231SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132pdzmk_vfnmsub132pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pdzmk_vfnmsub132pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PDZmk + %zmm0 = VFNMSUB132PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132pdzmkz_vfnmsub132pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pdzmkz_vfnmsub132pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PDZmkz + %zmm0 = VFNMSUB132PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132pszmk_vfnmsub132pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pszmk_vfnmsub132pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PSZmk + %zmm0 = VFNMSUB132PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132pszmkz_vfnmsub132pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pszmkz_vfnmsub132pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PSZmkz + %zmm0 = VFNMSUB132PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132sdzm_intk_vfnmsub132sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132sdzm_intk_vfnmsub132sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SDZm_Intk + %xmm0 = VFNMSUB132SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132sdzm_intkz_vfnmsub132sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132sdzm_intkz_vfnmsub132sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SDZm_Intkz + %xmm0 = VFNMSUB132SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132sszm_intk_vfnmsub132sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132sszm_intk_vfnmsub132sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SSZm_Intk + %xmm0 = VFNMSUB132SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132sszm_intkz_vfnmsub132sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132sszm_intkz_vfnmsub132sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SSZm_Intkz + %xmm0 = VFNMSUB132SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213pdzmk_vfnmsub213pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pdzmk_vfnmsub213pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PDZmk + %zmm0 = VFNMSUB213PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213pdzmkz_vfnmsub213pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pdzmkz_vfnmsub213pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PDZmkz + %zmm0 = VFNMSUB213PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213pszmk_vfnmsub213pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pszmk_vfnmsub213pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PSZmk + %zmm0 = VFNMSUB213PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213pszmkz_vfnmsub213pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pszmkz_vfnmsub213pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PSZmkz + %zmm0 = VFNMSUB213PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213sdzm_intk_vfnmsub213sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213sdzm_intk_vfnmsub213sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SDZm_Intk + %xmm0 = VFNMSUB213SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213sdzm_intkz_vfnmsub213sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213sdzm_intkz_vfnmsub213sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SDZm_Intkz + %xmm0 = VFNMSUB213SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213sszm_intk_vfnmsub213sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213sszm_intk_vfnmsub213sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SSZm_Intk + %xmm0 = VFNMSUB213SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213sszm_intkz_vfnmsub213sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213sszm_intkz_vfnmsub213sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SSZm_Intkz + %xmm0 = VFNMSUB213SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231pdzmk_vfnmsub231pdzrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pdzmk_vfnmsub231pdzrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PDZmk + %zmm0 = VFNMSUB231PDZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231pdzmkz_vfnmsub231pdzrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pdzmkz_vfnmsub231pdzrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PDZmkz + %zmm0 = VFNMSUB231PDZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231pszmk_vfnmsub231pszrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pszmk_vfnmsub231pszrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PSZmk + %zmm0 = VFNMSUB231PSZrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231pszmkz_vfnmsub231pszrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pszmkz_vfnmsub231pszrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PSZmkz + %zmm0 = VFNMSUB231PSZrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231sdzm_intk_vfnmsub231sdzr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231sdzm_intk_vfnmsub231sdzr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SDZm_Intk + %xmm0 = VFNMSUB231SDZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231sdzm_intkz_vfnmsub231sdzr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231sdzm_intkz_vfnmsub231sdzr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SDZm_Intkz + %xmm0 = VFNMSUB231SDZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231sszm_intk_vfnmsub231sszr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231sszm_intk_vfnmsub231sszr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SSZm_Intk + %xmm0 = VFNMSUB231SSZr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231sszm_intkz_vfnmsub231sszr_intkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231sszm_intkz_vfnmsub231sszr_intkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SSZm_Intkz + %xmm0 = VFNMSUB231SSZr_Intkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vgetexpsdmk_vgetexpsdrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vgetexpsdmk_vgetexpsdrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPSDmk + %xmm0 = VGETEXPSDrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vgetexpssmk_vgetexpssrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vgetexpssmk_vgetexpssrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPSSmk + %xmm0 = VGETEXPSSrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vgetmantsdz128rmik_vgetmantsdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vgetmantsdz128rmik_vgetmantsdz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTSDZ128rmik + %xmm0 = VGETMANTSDZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vgetmantssz128rmik_vgetmantssz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vgetmantssz128rmik_vgetmantssz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTSSZ128rmik + %xmm0 = VGETMANTSSZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vinsertf32x4zrmk_vinsertf32x4zrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vinsertf32x4zrmk_vinsertf32x4zrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF32x4Zrmk + %zmm0 = VINSERTF32x4Zrrk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vinsertf64x4zrmk_vinsertf64x4zrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vinsertf64x4zrmk_vinsertf64x4zrrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF64x4Zrmk + %zmm0 = VINSERTF64x4Zrrk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vinserti32x4zrmk_vinserti32x4zrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vinserti32x4zrmk_vinserti32x4zrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI32x4Zrmk + %zmm0 = VINSERTI32x4Zrrk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vinserti64x4zrmk_vinserti64x4zrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vinserti64x4zrmk_vinserti64x4zrrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI64x4Zrmk + %zmm0 = VINSERTI64x4Zrrk undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vmaxcpdzrmbk_vmaxpdzrbk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdzrmbk_vmaxpdzrbk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZrmbk + %zmm0 = VMAXPDZrbk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxcpdzrmk_vmaxcpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdzrmk_vmaxcpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZrmk + %zmm0 = VMAXCPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxcpszrmbk_vmaxpszrbk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxcpszrmbk_vmaxpszrbk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZrmbk + %zmm0 = VMAXPSZrbk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxcpszrmk_vmaxcpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxcpszrmk_vmaxcpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZrmk + %zmm0 = VMAXCPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxpdzrmk_vmaxpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxpdzrmk_vmaxpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPDZrmk + %zmm0 = VMAXPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxpszrmk_vmaxpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxpszrmk_vmaxpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPSZrmk + %zmm0 = VMAXPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxsdzrm_intk_vmaxsdzrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxsdzrm_intk_vmaxsdzrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSDZrm_Intk + %xmm0 = VMAXSDZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxsszrm_intk_vmaxsszrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxsszrm_intk_vmaxsszrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXSSZrm_Intk + %xmm0 = VMAXSSZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmincpdzrmbk_vminpdzrbk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmincpdzrmbk_vminpdzrbk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZrmbk + %zmm0 = VMINPDZrbk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vmincpdzrmk_vmincpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmincpdzrmk_vmincpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZrmk + %zmm0 = VMINCPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vmincpszrmbk_vminpszrbk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmincpszrmbk_vminpszrbk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZrmbk + %zmm0 = VMINPSZrbk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vmincpszrmk_vmincpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmincpszrmk_vmincpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZrmk + %zmm0 = VMINCPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vminpdzrmk_vminpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vminpdzrmk_vminpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPDZrmk + %zmm0 = VMINPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vminpszrmk_vminpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vminpszrmk_vminpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPSZrmk + %zmm0 = VMINPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vminsdzrm_intk_vminsdzrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vminsdzrm_intk_vminsdzrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSDZrm_Intk + %xmm0 = VMINSDZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vminsszrm_intk_vminsszrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vminsszrm_intk_vminsszrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINSSZrm_Intk + %xmm0 = VMINSSZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmulpdzrmk_vmulpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmulpdzrmk_vmulpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPDZrmk + %zmm0 = VMULPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vmulpszrmk_vmulpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vmulpszrmk_vmulpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPSZrmk + %zmm0 = VMULPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vmulsdzrm_intk_vmulsdzrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmulsdzrm_intk_vmulsdzrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSDZrm_Intk + %xmm0 = VMULSDZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmulsszrm_intk_vmulsszrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmulsszrm_intk_vmulsszrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULSSZrm_Intk + %xmm0 = VMULSSZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpadddzrmk_vpadddzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpadddzrmk_vpadddzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDDZrmk + %zmm0 = VPADDDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddqzrmk_vpaddqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddqzrmk_vpaddqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDQZrmk + %zmm0 = VPADDQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpanddzrmk_vpanddzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpanddzrmk_vpanddzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDDZrmk + %zmm0 = VPANDDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpandndzrmk_vpandndzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpandndzrmk_vpandndzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNDZrmk + %zmm0 = VPANDNDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpandnqzrmk_vpandnqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpandnqzrmk_vpandnqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNQZrmk + %zmm0 = VPANDNQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpandqzrmk_vpandqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpandqzrmk_vpandqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDQZrmk + %zmm0 = VPANDQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermdzrmk_vpermdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermdzrmk_vpermdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMDZrmk + %zmm0 = VPERMDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2drmk_vpermi2drrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2drmk_vpermi2drrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Drmk + %zmm0 = VPERMI2Drrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2drmkz_vpermi2drrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2drmkz_vpermi2drrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Drmkz + %zmm0 = VPERMI2Drrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2pdrmk_vpermi2pdrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2pdrmk_vpermi2pdrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PDrmk + %zmm0 = VPERMI2PDrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2pdrmkz_vpermi2pdrrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2pdrmkz_vpermi2pdrrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PDrmkz + %zmm0 = VPERMI2PDrrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2psrmk_vpermi2psrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2psrmk_vpermi2psrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PSrmk + %zmm0 = VPERMI2PSrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2psrmkz_vpermi2psrrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2psrmkz_vpermi2psrrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PSrmkz + %zmm0 = VPERMI2PSrrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2qrmk_vpermi2qrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2qrmk_vpermi2qrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Qrmk + %zmm0 = VPERMI2Qrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2qrmkz_vpermi2qrrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2qrmkz_vpermi2qrrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Qrmkz + %zmm0 = VPERMI2Qrrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermilpdzrmk_vpermilpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermilpdzrmk_vpermilpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZrmk + %zmm0 = VPERMILPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermilpszrmk_vpermilpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermilpszrmk_vpermilpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZrmk + %zmm0 = VPERMILPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermpdzrmk_vpermpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermpdzrmk_vpermpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZrmk + %zmm0 = VPERMPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermpszrmk_vpermpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermpszrmk_vpermpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPSZrmk + %zmm0 = VPERMPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermqzrmk_vpermqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermqzrmk_vpermqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZrmk + %zmm0 = VPERMQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2drmk_vpermt2drrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2drmk_vpermt2drrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Drmk + %zmm0 = VPERMT2Drrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2drmkz_vpermt2drrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2drmkz_vpermt2drrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Drmkz + %zmm0 = VPERMT2Drrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2pdrmk_vpermt2pdrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2pdrmk_vpermt2pdrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PDrmk + %zmm0 = VPERMT2PDrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2pdrmkz_vpermt2pdrrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2pdrmkz_vpermt2pdrrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PDrmkz + %zmm0 = VPERMT2PDrrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2psrmk_vpermt2psrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2psrmk_vpermt2psrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PSrmk + %zmm0 = VPERMT2PSrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2psrmkz_vpermt2psrrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2psrmkz_vpermt2psrrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PSrmkz + %zmm0 = VPERMT2PSrrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2qrmk_vpermt2qrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2qrmk_vpermt2qrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Qrmk + %zmm0 = VPERMT2Qrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2qrmkz_vpermt2qrrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2qrmkz_vpermt2qrrkz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Qrmkz + %zmm0 = VPERMT2Qrrkz undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxsdzrmk_vpmaxsdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxsdzrmk_vpmaxsdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSDZrmk + %zmm0 = VPMAXSDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxsqzrmk_vpmaxsqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxsqzrmk_vpmaxsqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSQZrmk + %zmm0 = VPMAXSQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxudzrmk_vpmaxudzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxudzrmk_vpmaxudzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUDZrmk + %zmm0 = VPMAXUDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxuqzrmk_vpmaxuqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxuqzrmk_vpmaxuqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUQZrmk + %zmm0 = VPMAXUQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminsdzrmk_vpminsdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpminsdzrmk_vpminsdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSDZrmk + %zmm0 = VPMINSDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminsqzrmk_vpminsqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpminsqzrmk_vpminsqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSQZrmk + %zmm0 = VPMINSQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminudzrmk_vpminudzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpminudzrmk_vpminudzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUDZrmk + %zmm0 = VPMINUDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminuqzrmk_vpminuqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpminuqzrmk_vpminuqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUQZrmk + %zmm0 = VPMINUQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmuldqzrmk_vpmuldqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmuldqzrmk_vpmuldqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULDQZrmk + %zmm0 = VPMULDQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulldzrmk_vpmulldzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmulldzrmk_vpmulldzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLDZrmk + %zmm0 = VPMULLDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmuludqzrmk_vpmuludqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpmuludqzrmk_vpmuludqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULUDQZrmk + %zmm0 = VPMULUDQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpordzrmk_vpordzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpordzrmk_vpordzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORDZrmk + %zmm0 = VPORDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vporqzrmk_vporqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vporqzrmk_vporqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORQZrmk + %zmm0 = VPORQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vprolvdzrmk_vprolvdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vprolvdzrmk_vprolvdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVDZrmk + %zmm0 = VPROLVDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vprolvqzrmk_vprolvqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vprolvqzrmk_vprolvqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVQZrmk + %zmm0 = VPROLVQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vprorvdzrmk_vprorvdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vprorvdzrmk_vprorvdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVDZrmk + %zmm0 = VPRORVDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vprorvqzrmk_vprorvqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vprorvqzrmk_vprorvqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVQZrmk + %zmm0 = VPRORVQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpslldzrmk_vpslldzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpslldzrmk_vpslldzrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZrmk + %zmm0 = VPSLLDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllqzrmk_vpsllqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllqzrmk_vpsllqzrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZrmk + %zmm0 = VPSLLQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllvdzrmk_vpsllvdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllvdzrmk_vpsllvdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVDZrmk + %zmm0 = VPSLLVDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllvqzrmk_vpsllvqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllvqzrmk_vpsllvqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVQZrmk + %zmm0 = VPSLLVQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsradzrmk_vpsradzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsradzrmk_vpsradzrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZrmk + %zmm0 = VPSRADZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsraqzrmk_vpsraqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsraqzrmk_vpsraqzrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZrmk + %zmm0 = VPSRAQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsravdzrmk_vpsravdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsravdzrmk_vpsravdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVDZrmk + %zmm0 = VPSRAVDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsravqzrmk_vpsravqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsravqzrmk_vpsravqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVQZrmk + %zmm0 = VPSRAVQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrldzrmk_vpsrldzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrldzrmk_vpsrldzrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZrmk + %zmm0 = VPSRLDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlqzrmk_vpsrlqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlqzrmk_vpsrlqzrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZrmk + %zmm0 = VPSRLQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlvdzrmk_vpsrlvdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlvdzrmk_vpsrlvdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVDZrmk + %zmm0 = VPSRLVDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlvqzrmk_vpsrlvqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlvqzrmk_vpsrlvqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVQZrmk + %zmm0 = VPSRLVQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubdzrmk_vpsubdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubdzrmk_vpsubdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBDZrmk + %zmm0 = VPSUBDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubqzrmk_vpsubqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubqzrmk_vpsubqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBQZrmk + %zmm0 = VPSUBQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpternlogdzrmik_vpternlogdzrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogdzrmik_vpternlogdzrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGDZrmik + %zmm0 = VPTERNLOGDZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpternlogdzrmikz_vpternlogdzrrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogdzrmikz_vpternlogdzrrikz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGDZrmikz + %zmm0 = VPTERNLOGDZrrikz undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpternlogqzrmik_vpternlogqzrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogqzrmik_vpternlogqzrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGQZrmik + %zmm0 = VPTERNLOGQZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpternlogqzrmikz_vpternlogqzrrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogqzrmikz_vpternlogqzrrikz_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGQZrmikz + %zmm0 = VPTERNLOGQZrrikz undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpunpckhdqzrmk_vpunpckhdqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhdqzrmk_vpunpckhdqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHDQZrmk + %zmm0 = VPUNPCKHDQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckhqdqzrmk_vpunpckhqdqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhqdqzrmk_vpunpckhqdqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHQDQZrmk + %zmm0 = VPUNPCKHQDQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckldqzrmk_vpunpckldqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckldqzrmk_vpunpckldqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLDQZrmk + %zmm0 = VPUNPCKLDQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpcklqdqzrmk_vpunpcklqdqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpcklqdqzrmk_vpunpcklqdqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLQDQZrmk + %zmm0 = VPUNPCKLQDQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpxordzrmk_vpxordzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpxordzrmk_vpxordzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORDZrmk + %zmm0 = VPXORDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vpxorqzrmk_vpxorqzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vpxorqzrmk_vpxorqzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORQZrmk + %zmm0 = VPXORQZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vrcp14sdrmk_vrcp14sdrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrcp14sdrmk_vrcp14sdrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14SDrmk + %xmm0 = VRCP14SDrrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vrcp14ssrmk_vrcp14ssrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrcp14ssrmk_vrcp14ssrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14SSrmk + %xmm0 = VRCP14SSrrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vrndscalesdmk_vrndscalesdrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrndscalesdmk_vrndscalesdrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALESDmk + %xmm0 = VRNDSCALESDrk undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrndscalessmk_vrndscalessrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrndscalessmk_vrndscalessrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALESSmk + %xmm0 = VRNDSCALESSrk undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vrsqrt14sdrmk_vrsqrt14sdrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14sdrmk_vrsqrt14sdrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14SDrmk + %xmm0 = VRSQRT14SDrrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vrsqrt14ssrmk_vrsqrt14ssrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14ssrmk_vrsqrt14ssrrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14SSrmk + %xmm0 = VRSQRT14SSrrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vscalefpdzrmk_vscalefpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vscalefpdzrmk_vscalefpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPDZrmk + %zmm0 = VSCALEFPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vscalefpszrmk_vscalefpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vscalefpszrmk_vscalefpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPSZrmk + %zmm0 = VSCALEFPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vscalefsdz128rmk_vscalefsdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vscalefsdz128rmk_vscalefsdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFSDZ128rmk + %xmm0 = VSCALEFSDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vscalefssz128rmk_vscalefssz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vscalefssz128rmk_vscalefssz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFSSZ128rmk + %xmm0 = VSCALEFSSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vshuff32x4zrmik_vshuff32x4zrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vshuff32x4zrmik_vshuff32x4zrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF32X4Zrmik + %zmm0 = VSHUFF32X4Zrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshuff64x2zrmik_vshuff64x2zrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vshuff64x2zrmik_vshuff64x2zrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF64X2Zrmik + %zmm0 = VSHUFF64X2Zrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshufi32x4zrmik_vshufi32x4zrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vshufi32x4zrmik_vshufi32x4zrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI32X4Zrmik + %zmm0 = VSHUFI32X4Zrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshufi64x2zrmik_vshufi64x2zrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vshufi64x2zrmik_vshufi64x2zrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI64X2Zrmik + %zmm0 = VSHUFI64X2Zrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshufpdzrmik_vshufpdzrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vshufpdzrmik_vshufpdzrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPDZrmik + %zmm0 = VSHUFPDZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshufpszrmik_vshufpszrrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vshufpszrmik_vshufpszrrik_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPSZrmik + %zmm0 = VSHUFPSZrrik undef %zmm1, undef %k1, undef %zmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vsubpdzrmk_vsubpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vsubpdzrmk_vsubpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPDZrmk + %zmm0 = VSUBPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vsubpszrmk_vsubpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vsubpszrmk_vsubpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPSZrmk + %zmm0 = VSUBPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vsubsdzrm_intk_vsubsdzrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vsubsdzrm_intk_vsubsdzrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSDZrm_Intk + %xmm0 = VSUBSDZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vsubsszrm_intk_vsubsszrr_intk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vsubsszrm_intk_vsubsszrr_intk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBSSZrm_Intk + %xmm0 = VSUBSSZrr_Intk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vunpckhpdzrmk_vunpckhpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vunpckhpdzrmk_vunpckhpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPDZrmk + %zmm0 = VUNPCKHPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vunpckhpszrmk_vunpckhpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vunpckhpszrmk_vunpckhpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPSZrmk + %zmm0 = VUNPCKHPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vunpcklpdzrmk_vunpcklpdzrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vunpcklpdzrmk_vunpcklpdzrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPDZrmk + %zmm0 = VUNPCKLPDZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... +--- +name: stack_fold_vunpcklpszrmk_vunpcklpszrrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr512 } +liveins: + - { reg: '%zmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %zmm3 + + ; CHECK-LABEL: name: stack_fold_vunpcklpszrmk_vunpcklpszrrk_test + %4 = COPY %zmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPSZrmk + %zmm0 = VUNPCKLPSZrrk undef %zmm1, undef %k1, undef %zmm2, %4 + RET 0 +... Index: test/CodeGen/X86/memoryFolding-avx512vl.mir =================================================================== --- test/CodeGen/X86/memoryFolding-avx512vl.mir +++ test/CodeGen/X86/memoryFolding-avx512vl.mir @@ -0,0 +1,25428 @@ +# RUN: llc -run-pass greedy -stack-alignment=64 -o - %s | FileCheck %s +# Stack alignment set to 64 to enable folding of aligned mov instructions. +--- | + attributes #0 = { "target-features" = "+avx512f,+avx512vl" } + define void @stack_fold_vcompresspdz128mr_vcompresspdz128rr_test() #0 { ret void } + define void @stack_fold_vcompresspdz256mr_vcompresspdz256rr_test() #0 { ret void } + define void @stack_fold_vcompresspsz128mr_vcompresspsz128rr_test() #0 { ret void } + define void @stack_fold_vcompresspsz256mr_vcompresspsz256rr_test() #0 { ret void } + define void @stack_fold_vcvtps2phz128mr_vcvtps2phz128rr_test() #0 { ret void } + define void @stack_fold_vcvtps2phz256mr_vcvtps2phz256rr_test() #0 { ret void } + define void @stack_fold_vextractf32x4z256mr_vextractf32x4z256rr_test() #0 { ret void } + define void @stack_fold_vextracti32x4z256mr_vextracti32x4z256rr_test() #0 { ret void } + define void @stack_fold_vmovapdz128mr_vmovapdz128rr_test() #0 { ret void } + define void @stack_fold_vmovapdz256mr_vmovapdz256rr_test() #0 { ret void } + define void @stack_fold_vmovapsz128mr_vmovapsz128rr_test() #0 { ret void } + define void @stack_fold_vmovapsz256mr_vmovapsz256rr_test() #0 { ret void } + define void @stack_fold_vmovdqa32z128mr_vmovdqa32z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqa32z256mr_vmovdqa32z256rr_test() #0 { ret void } + define void @stack_fold_vmovdqa64z128mr_vmovdqa64z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqa64z256mr_vmovdqa64z256rr_test() #0 { ret void } + define void @stack_fold_vmovdqu32z128mr_vmovdqu32z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqu32z256mr_vmovdqu32z256rr_test() #0 { ret void } + define void @stack_fold_vmovdqu64z128mr_vmovdqu64z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqu64z256mr_vmovdqu64z256rr_test() #0 { ret void } + define void @stack_fold_vmovupdz128mr_vmovupdz128rr_test() #0 { ret void } + define void @stack_fold_vmovupdz256mr_vmovupdz256rr_test() #0 { ret void } + define void @stack_fold_vmovupsz128mr_vmovupsz128rr_test() #0 { ret void } + define void @stack_fold_vmovupsz256mr_vmovupsz256rr_test() #0 { ret void } + define void @stack_fold_vpcompressdz128mr_vpcompressdz128rr_test() #0 { ret void } + define void @stack_fold_vpcompressdz256mr_vpcompressdz256rr_test() #0 { ret void } + define void @stack_fold_vpcompressqz128mr_vpcompressqz128rr_test() #0 { ret void } + define void @stack_fold_vpcompressqz256mr_vpcompressqz256rr_test() #0 { ret void } + define void @stack_fold_vpmovdbz128mr_vpmovdbz128rr_test() #0 { ret void } + define void @stack_fold_vpmovdbz256mr_vpmovdbz256rr_test() #0 { ret void } + define void @stack_fold_vpmovdwz128mr_vpmovdwz128rr_test() #0 { ret void } + define void @stack_fold_vpmovdwz256mr_vpmovdwz256rr_test() #0 { ret void } + define void @stack_fold_vpmovqbz128mr_vpmovqbz128rr_test() #0 { ret void } + define void @stack_fold_vpmovqbz256mr_vpmovqbz256rr_test() #0 { ret void } + define void @stack_fold_vpmovqdz128mr_vpmovqdz128rr_test() #0 { ret void } + define void @stack_fold_vpmovqdz256mr_vpmovqdz256rr_test() #0 { ret void } + define void @stack_fold_vpmovqwz128mr_vpmovqwz128rr_test() #0 { ret void } + define void @stack_fold_vpmovqwz256mr_vpmovqwz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsdbz128mr_vpmovsdbz128rr_test() #0 { ret void } + define void @stack_fold_vpmovsdbz256mr_vpmovsdbz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsdwz128mr_vpmovsdwz128rr_test() #0 { ret void } + define void @stack_fold_vpmovsdwz256mr_vpmovsdwz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsqbz128mr_vpmovsqbz128rr_test() #0 { ret void } + define void @stack_fold_vpmovsqbz256mr_vpmovsqbz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsqdz128mr_vpmovsqdz128rr_test() #0 { ret void } + define void @stack_fold_vpmovsqdz256mr_vpmovsqdz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsqwz128mr_vpmovsqwz128rr_test() #0 { ret void } + define void @stack_fold_vpmovsqwz256mr_vpmovsqwz256rr_test() #0 { ret void } + define void @stack_fold_vpmovusdbz128mr_vpmovusdbz128rr_test() #0 { ret void } + define void @stack_fold_vpmovusdbz256mr_vpmovusdbz256rr_test() #0 { ret void } + define void @stack_fold_vpmovusdwz128mr_vpmovusdwz128rr_test() #0 { ret void } + define void @stack_fold_vpmovusdwz256mr_vpmovusdwz256rr_test() #0 { ret void } + define void @stack_fold_vpmovusqbz128mr_vpmovusqbz128rr_test() #0 { ret void } + define void @stack_fold_vpmovusqbz256mr_vpmovusqbz256rr_test() #0 { ret void } + define void @stack_fold_vpmovusqdz128mr_vpmovusqdz128rr_test() #0 { ret void } + define void @stack_fold_vpmovusqdz256mr_vpmovusqdz256rr_test() #0 { ret void } + define void @stack_fold_vpmovusqwz128mr_vpmovusqwz128rr_test() #0 { ret void } + define void @stack_fold_vpmovusqwz256mr_vpmovusqwz256rr_test() #0 { ret void } + define void @stack_fold_vbroadcastsdz256m_vbroadcastsdz256r_test() #0 { ret void } + define void @stack_fold_vbroadcastssz128m_vbroadcastssz128r_test() #0 { ret void } + define void @stack_fold_vbroadcastssz256m_vbroadcastssz256r_test() #0 { ret void } + define void @stack_fold_vcvtdq2pdz128rm_vcvtdq2pdz128rr_test() #0 { ret void } + define void @stack_fold_vcvtdq2pdz256rm_vcvtdq2pdz256rr_test() #0 { ret void } + define void @stack_fold_vcvtdq2psz128rm_vcvtdq2psz128rr_test() #0 { ret void } + define void @stack_fold_vcvtdq2psz256rm_vcvtdq2psz256rr_test() #0 { ret void } + define void @stack_fold_vcvtpd2dqz128rm_vcvtpd2dqz128rr_test() #0 { ret void } + define void @stack_fold_vcvtpd2dqz256rm_vcvtpd2dqz256rr_test() #0 { ret void } + define void @stack_fold_vcvtpd2psz128rm_vcvtpd2psz128rr_test() #0 { ret void } + define void @stack_fold_vcvtpd2psz256rm_vcvtpd2psz256rr_test() #0 { ret void } + define void @stack_fold_vcvtpd2udqz128rm_vcvtpd2udqz128rr_test() #0 { ret void } + define void @stack_fold_vcvtpd2udqz256rm_vcvtpd2udqz256rr_test() #0 { ret void } + define void @stack_fold_vcvtph2psz128rm_vcvtph2psz128rr_test() #0 { ret void } + define void @stack_fold_vcvtph2psz256rm_vcvtph2psz256rr_test() #0 { ret void } + define void @stack_fold_vcvtps2dqz128rm_vcvtps2dqz128rr_test() #0 { ret void } + define void @stack_fold_vcvtps2dqz256rm_vcvtps2dqz256rr_test() #0 { ret void } + define void @stack_fold_vcvtps2pdz128rm_vcvtps2pdz128rr_test() #0 { ret void } + define void @stack_fold_vcvtps2pdz256rm_vcvtps2pdz256rr_test() #0 { ret void } + define void @stack_fold_vcvtps2udqz128rm_vcvtps2udqz128rr_test() #0 { ret void } + define void @stack_fold_vcvtps2udqz256rm_vcvtps2udqz256rr_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqz128rm_vcvttpd2dqz128rr_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqz256rm_vcvttpd2dqz256rr_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqz128rm_vcvttpd2udqz128rr_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqz256rm_vcvttpd2udqz256rr_test() #0 { ret void } + define void @stack_fold_vcvttps2dqz128rm_vcvttps2dqz128rr_test() #0 { ret void } + define void @stack_fold_vcvttps2dqz256rm_vcvttps2dqz256rr_test() #0 { ret void } + define void @stack_fold_vcvttps2udqz128rm_vcvttps2udqz128rr_test() #0 { ret void } + define void @stack_fold_vcvttps2udqz256rm_vcvttps2udqz256rr_test() #0 { ret void } + define void @stack_fold_vcvtudq2pdz128rm_vcvtudq2pdz128rr_test() #0 { ret void } + define void @stack_fold_vcvtudq2pdz256rm_vcvtudq2pdz256rr_test() #0 { ret void } + define void @stack_fold_vcvtudq2psz128rm_vcvtudq2psz128rr_test() #0 { ret void } + define void @stack_fold_vcvtudq2psz256rm_vcvtudq2psz256rr_test() #0 { ret void } + define void @stack_fold_vexpandpdz128rm_vexpandpdz128rr_test() #0 { ret void } + define void @stack_fold_vexpandpdz256rm_vexpandpdz256rr_test() #0 { ret void } + define void @stack_fold_vexpandpsz128rm_vexpandpsz128rr_test() #0 { ret void } + define void @stack_fold_vexpandpsz256rm_vexpandpsz256rr_test() #0 { ret void } + define void @stack_fold_vgetexppdz128m_vgetexppdz128r_test() #0 { ret void } + define void @stack_fold_vgetexppdz256m_vgetexppdz256r_test() #0 { ret void } + define void @stack_fold_vgetexppsz128m_vgetexppsz128r_test() #0 { ret void } + define void @stack_fold_vgetexppsz256m_vgetexppsz256r_test() #0 { ret void } + define void @stack_fold_vgetmantpdz128rmi_vgetmantpdz128rri_test() #0 { ret void } + define void @stack_fold_vgetmantpdz256rmi_vgetmantpdz256rri_test() #0 { ret void } + define void @stack_fold_vgetmantpsz128rmi_vgetmantpsz128rri_test() #0 { ret void } + define void @stack_fold_vgetmantpsz256rmi_vgetmantpsz256rri_test() #0 { ret void } + define void @stack_fold_vmovapdz128rm_vmovapdz128rr_test() #0 { ret void } + define void @stack_fold_vmovapdz256rm_vmovapdz256rr_test() #0 { ret void } + define void @stack_fold_vmovapsz128rm_vmovapsz128rr_test() #0 { ret void } + define void @stack_fold_vmovapsz256rm_vmovapsz256rr_test() #0 { ret void } + define void @stack_fold_vmovddupz128rm_vmovddupz128rr_test() #0 { ret void } + define void @stack_fold_vmovddupz256rm_vmovddupz256rr_test() #0 { ret void } + define void @stack_fold_vmovdqa32z128rm_vmovdqa32z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqa32z256rm_vmovdqa32z256rr_test() #0 { ret void } + define void @stack_fold_vmovdqa64z128rm_vmovdqa64z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqa64z256rm_vmovdqa64z256rr_test() #0 { ret void } + define void @stack_fold_vmovdqu32z128rm_vmovdqu32z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqu32z256rm_vmovdqu32z256rr_test() #0 { ret void } + define void @stack_fold_vmovdqu64z128rm_vmovdqu64z128rr_test() #0 { ret void } + define void @stack_fold_vmovdqu64z256rm_vmovdqu64z256rr_test() #0 { ret void } + define void @stack_fold_vmovshdupz128rm_vmovshdupz128rr_test() #0 { ret void } + define void @stack_fold_vmovshdupz256rm_vmovshdupz256rr_test() #0 { ret void } + define void @stack_fold_vmovsldupz128rm_vmovsldupz128rr_test() #0 { ret void } + define void @stack_fold_vmovsldupz256rm_vmovsldupz256rr_test() #0 { ret void } + define void @stack_fold_vmovupdz128rm_vmovupdz128rr_test() #0 { ret void } + define void @stack_fold_vmovupdz256rm_vmovupdz256rr_test() #0 { ret void } + define void @stack_fold_vmovupsz128rm_vmovupsz128rr_test() #0 { ret void } + define void @stack_fold_vmovupsz256rm_vmovupsz256rr_test() #0 { ret void } + define void @stack_fold_vpabsdz128rm_vpabsdz128rr_test() #0 { ret void } + define void @stack_fold_vpabsdz256rm_vpabsdz256rr_test() #0 { ret void } + define void @stack_fold_vpabsqz128rm_vpabsqz128rr_test() #0 { ret void } + define void @stack_fold_vpabsqz256rm_vpabsqz256rr_test() #0 { ret void } + define void @stack_fold_vpbroadcastdz128m_vpbroadcastdz128r_test() #0 { ret void } + define void @stack_fold_vpbroadcastdz256m_vpbroadcastdz256r_test() #0 { ret void } + define void @stack_fold_vpbroadcastqz128m_vpbroadcastqz128r_test() #0 { ret void } + define void @stack_fold_vpbroadcastqz256m_vpbroadcastqz256r_test() #0 { ret void } + define void @stack_fold_vpermilpdz128mi_vpermilpdz128ri_test() #0 { ret void } + define void @stack_fold_vpermilpdz256mi_vpermilpdz256ri_test() #0 { ret void } + define void @stack_fold_vpermilpsz128mi_vpermilpsz128ri_test() #0 { ret void } + define void @stack_fold_vpermilpsz256mi_vpermilpsz256ri_test() #0 { ret void } + define void @stack_fold_vpermpdz256mi_vpermpdz256ri_test() #0 { ret void } + define void @stack_fold_vpermqz256mi_vpermqz256ri_test() #0 { ret void } + define void @stack_fold_vpexpanddz128rm_vpexpanddz128rr_test() #0 { ret void } + define void @stack_fold_vpexpanddz256rm_vpexpanddz256rr_test() #0 { ret void } + define void @stack_fold_vpexpandqz128rm_vpexpandqz128rr_test() #0 { ret void } + define void @stack_fold_vpexpandqz256rm_vpexpandqz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsxbdz128rm_vpmovsxbdz128rr_test() #0 { ret void } + define void @stack_fold_vpmovsxbdz256rm_vpmovsxbdz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsxbqz128rm_vpmovsxbqz128rr_test() #0 { ret void } + define void @stack_fold_vpmovsxbqz256rm_vpmovsxbqz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsxdqz128rm_vpmovsxdqz128rr_test() #0 { ret void } + define void @stack_fold_vpmovsxdqz256rm_vpmovsxdqz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsxwdz128rm_vpmovsxwdz128rr_test() #0 { ret void } + define void @stack_fold_vpmovsxwdz256rm_vpmovsxwdz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsxwqz128rm_vpmovsxwqz128rr_test() #0 { ret void } + define void @stack_fold_vpmovsxwqz256rm_vpmovsxwqz256rr_test() #0 { ret void } + define void @stack_fold_vpmovzxbdz128rm_vpmovzxbdz128rr_test() #0 { ret void } + define void @stack_fold_vpmovzxbdz256rm_vpmovzxbdz256rr_test() #0 { ret void } + define void @stack_fold_vpmovzxbqz128rm_vpmovzxbqz128rr_test() #0 { ret void } + define void @stack_fold_vpmovzxbqz256rm_vpmovzxbqz256rr_test() #0 { ret void } + define void @stack_fold_vpmovzxdqz128rm_vpmovzxdqz128rr_test() #0 { ret void } + define void @stack_fold_vpmovzxdqz256rm_vpmovzxdqz256rr_test() #0 { ret void } + define void @stack_fold_vpmovzxwdz128rm_vpmovzxwdz128rr_test() #0 { ret void } + define void @stack_fold_vpmovzxwdz256rm_vpmovzxwdz256rr_test() #0 { ret void } + define void @stack_fold_vpmovzxwqz128rm_vpmovzxwqz128rr_test() #0 { ret void } + define void @stack_fold_vpmovzxwqz256rm_vpmovzxwqz256rr_test() #0 { ret void } + define void @stack_fold_vproldz128mi_vproldz128ri_test() #0 { ret void } + define void @stack_fold_vproldz256mi_vproldz256ri_test() #0 { ret void } + define void @stack_fold_vprolqz128mi_vprolqz128ri_test() #0 { ret void } + define void @stack_fold_vprolqz256mi_vprolqz256ri_test() #0 { ret void } + define void @stack_fold_vprordz128mi_vprordz128ri_test() #0 { ret void } + define void @stack_fold_vprordz256mi_vprordz256ri_test() #0 { ret void } + define void @stack_fold_vprorqz128mi_vprorqz128ri_test() #0 { ret void } + define void @stack_fold_vprorqz256mi_vprorqz256ri_test() #0 { ret void } + define void @stack_fold_vpshufdz128mi_vpshufdz128ri_test() #0 { ret void } + define void @stack_fold_vpshufdz256mi_vpshufdz256ri_test() #0 { ret void } + define void @stack_fold_vpslldz128mi_vpslldz128ri_test() #0 { ret void } + define void @stack_fold_vpslldz256mi_vpslldz256ri_test() #0 { ret void } + define void @stack_fold_vpsllqz128mi_vpsllqz128ri_test() #0 { ret void } + define void @stack_fold_vpsllqz256mi_vpsllqz256ri_test() #0 { ret void } + define void @stack_fold_vpsradz128mi_vpsradz128ri_test() #0 { ret void } + define void @stack_fold_vpsradz256mi_vpsradz256ri_test() #0 { ret void } + define void @stack_fold_vpsraqz128mi_vpsraqz128ri_test() #0 { ret void } + define void @stack_fold_vpsraqz256mi_vpsraqz256ri_test() #0 { ret void } + define void @stack_fold_vpsrldz128mi_vpsrldz128ri_test() #0 { ret void } + define void @stack_fold_vpsrldz256mi_vpsrldz256ri_test() #0 { ret void } + define void @stack_fold_vpsrlqz128mi_vpsrlqz128ri_test() #0 { ret void } + define void @stack_fold_vpsrlqz256mi_vpsrlqz256ri_test() #0 { ret void } + define void @stack_fold_vrcp14pdz128m_vrcp14pdz128r_test() #0 { ret void } + define void @stack_fold_vrcp14pdz256m_vrcp14pdz256r_test() #0 { ret void } + define void @stack_fold_vrcp14psz128m_vrcp14psz128r_test() #0 { ret void } + define void @stack_fold_vrcp14psz256m_vrcp14psz256r_test() #0 { ret void } + define void @stack_fold_vrndscalepdz128rmi_vrndscalepdz128rri_test() #0 { ret void } + define void @stack_fold_vrndscalepdz256rmi_vrndscalepdz256rri_test() #0 { ret void } + define void @stack_fold_vrndscalepsz128rmi_vrndscalepsz128rri_test() #0 { ret void } + define void @stack_fold_vrndscalepsz256rmi_vrndscalepsz256rri_test() #0 { ret void } + define void @stack_fold_vrsqrt14pdz128m_vrsqrt14pdz128r_test() #0 { ret void } + define void @stack_fold_vrsqrt14pdz256m_vrsqrt14pdz256r_test() #0 { ret void } + define void @stack_fold_vrsqrt14psz128m_vrsqrt14psz128r_test() #0 { ret void } + define void @stack_fold_vrsqrt14psz256m_vrsqrt14psz256r_test() #0 { ret void } + define void @stack_fold_vsqrtpdz128m_vsqrtpdz128r_test() #0 { ret void } + define void @stack_fold_vsqrtpdz256m_vsqrtpdz256r_test() #0 { ret void } + define void @stack_fold_vsqrtpsz128m_vsqrtpsz128r_test() #0 { ret void } + define void @stack_fold_vsqrtpsz256m_vsqrtpsz256r_test() #0 { ret void } + define void @stack_fold_vaddpdz128rm_vaddpdz128rr_test() #0 { ret void } + define void @stack_fold_vaddpdz256rm_vaddpdz256rr_test() #0 { ret void } + define void @stack_fold_vaddpsz128rm_vaddpsz128rr_test() #0 { ret void } + define void @stack_fold_vaddpsz256rm_vaddpsz256rr_test() #0 { ret void } + define void @stack_fold_valigndz128rmi_valigndz128rri_test() #0 { ret void } + define void @stack_fold_valigndz256rmi_valigndz256rri_test() #0 { ret void } + define void @stack_fold_valignqz128rmi_valignqz128rri_test() #0 { ret void } + define void @stack_fold_valignqz256rmi_valignqz256rri_test() #0 { ret void } + define void @stack_fold_vblendmpdz128rm_vblendmpdz128rr_test() #0 { ret void } + define void @stack_fold_vblendmpdz256rm_vblendmpdz256rr_test() #0 { ret void } + define void @stack_fold_vblendmpsz128rm_vblendmpsz128rr_test() #0 { ret void } + define void @stack_fold_vblendmpsz256rm_vblendmpsz256rr_test() #0 { ret void } + define void @stack_fold_vbroadcastsdz256mkz_vbroadcastsdz256rkz_test() #0 { ret void } + define void @stack_fold_vbroadcastssz128mkz_vbroadcastssz128rkz_test() #0 { ret void } + define void @stack_fold_vbroadcastssz256mkz_vbroadcastssz256rkz_test() #0 { ret void } + define void @stack_fold_vcmppdz128rmi_vcmppdz128rri_test() #0 { ret void } + define void @stack_fold_vcmppdz128rmi_alt_vcmppdz128rri_alt_test() #0 { ret void } + define void @stack_fold_vcmppdz256rmi_vcmppdz256rri_test() #0 { ret void } + define void @stack_fold_vcmppdz256rmi_alt_vcmppdz256rri_alt_test() #0 { ret void } + define void @stack_fold_vcmppsz128rmi_vcmppsz128rri_test() #0 { ret void } + define void @stack_fold_vcmppsz128rmi_alt_vcmppsz128rri_alt_test() #0 { ret void } + define void @stack_fold_vcmppsz256rmi_vcmppsz256rri_test() #0 { ret void } + define void @stack_fold_vcmppsz256rmi_alt_vcmppsz256rri_alt_test() #0 { ret void } + define void @stack_fold_vcvtdq2pdz128rmkz_vcvtdq2pdz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtdq2pdz256rmkz_vcvtdq2pdz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtdq2psz128rmkz_vcvtdq2psz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtdq2psz256rmkz_vcvtdq2psz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2dqz128rmkz_vcvtpd2dqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2dqz256rmkz_vcvtpd2dqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2psz128rmkz_vcvtpd2psz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2psz256rmkz_vcvtpd2psz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2udqz128rmkz_vcvtpd2udqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtpd2udqz256rmkz_vcvtpd2udqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtph2psz128rmkz_vcvtph2psz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtph2psz256rmkz_vcvtph2psz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2dqz128rmkz_vcvtps2dqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2dqz256rmkz_vcvtps2dqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2pdz128rmkz_vcvtps2pdz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2pdz256rmkz_vcvtps2pdz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2udqz128rmkz_vcvtps2udqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtps2udqz256rmkz_vcvtps2udqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqz128rmkz_vcvttpd2dqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqz256rmkz_vcvttpd2dqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqz128rmkz_vcvttpd2udqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqz256rmkz_vcvttpd2udqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2dqz128rmkz_vcvttps2dqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2dqz256rmkz_vcvttps2dqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2udqz128rmkz_vcvttps2udqz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvttps2udqz256rmkz_vcvttps2udqz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtudq2pdz128rmkz_vcvtudq2pdz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtudq2pdz256rmkz_vcvtudq2pdz256rrkz_test() #0 { ret void } + define void @stack_fold_vcvtudq2psz128rmkz_vcvtudq2psz128rrkz_test() #0 { ret void } + define void @stack_fold_vcvtudq2psz256rmkz_vcvtudq2psz256rrkz_test() #0 { ret void } + define void @stack_fold_vdivpdz128rm_vdivpdz128rr_test() #0 { ret void } + define void @stack_fold_vdivpdz256rm_vdivpdz256rr_test() #0 { ret void } + define void @stack_fold_vdivpsz128rm_vdivpsz128rr_test() #0 { ret void } + define void @stack_fold_vdivpsz256rm_vdivpsz256rr_test() #0 { ret void } + define void @stack_fold_vexpandpdz128rmkz_vexpandpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vexpandpdz256rmkz_vexpandpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vexpandpsz128rmkz_vexpandpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vexpandpsz256rmkz_vexpandpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vgetexppdz128mkz_vgetexppdz128rkz_test() #0 { ret void } + define void @stack_fold_vgetexppdz256mkz_vgetexppdz256rkz_test() #0 { ret void } + define void @stack_fold_vgetexppsz128mkz_vgetexppsz128rkz_test() #0 { ret void } + define void @stack_fold_vgetexppsz256mkz_vgetexppsz256rkz_test() #0 { ret void } + define void @stack_fold_vgetmantpdz128rmikz_vgetmantpdz128rrikz_test() #0 { ret void } + define void @stack_fold_vgetmantpdz256rmikz_vgetmantpdz256rrikz_test() #0 { ret void } + define void @stack_fold_vgetmantpsz128rmikz_vgetmantpsz128rrikz_test() #0 { ret void } + define void @stack_fold_vgetmantpsz256rmikz_vgetmantpsz256rrikz_test() #0 { ret void } + define void @stack_fold_vinsertf32x4z256rm_vinsertf32x4z256rr_test() #0 { ret void } + define void @stack_fold_vinserti32x4z256rm_vinserti32x4z256rr_test() #0 { ret void } + define void @stack_fold_vmaxcpdz128rm_vmaxcpdz128rr_test() #0 { ret void } + define void @stack_fold_vmaxcpdz256rm_vmaxcpdz256rr_test() #0 { ret void } + define void @stack_fold_vmaxcpsz128rm_vmaxcpsz128rr_test() #0 { ret void } + define void @stack_fold_vmaxcpsz256rm_vmaxcpsz256rr_test() #0 { ret void } + define void @stack_fold_vmaxpdz128rm_vmaxpdz128rr_test() #0 { ret void } + define void @stack_fold_vmaxpdz256rm_vmaxpdz256rr_test() #0 { ret void } + define void @stack_fold_vmaxpsz128rm_vmaxpsz128rr_test() #0 { ret void } + define void @stack_fold_vmaxpsz256rm_vmaxpsz256rr_test() #0 { ret void } + define void @stack_fold_vmincpdz128rm_vmincpdz128rr_test() #0 { ret void } + define void @stack_fold_vmincpdz256rm_vmincpdz256rr_test() #0 { ret void } + define void @stack_fold_vmincpsz128rm_vmincpsz128rr_test() #0 { ret void } + define void @stack_fold_vmincpsz256rm_vmincpsz256rr_test() #0 { ret void } + define void @stack_fold_vminpdz128rm_vminpdz128rr_test() #0 { ret void } + define void @stack_fold_vminpdz256rm_vminpdz256rr_test() #0 { ret void } + define void @stack_fold_vminpsz128rm_vminpsz128rr_test() #0 { ret void } + define void @stack_fold_vminpsz256rm_vminpsz256rr_test() #0 { ret void } + define void @stack_fold_vmovapdz128rmkz_vmovapdz128rrkz_test() #0 { ret void } + define void @stack_fold_vmovapdz256rmkz_vmovapdz256rrkz_test() #0 { ret void } + define void @stack_fold_vmovapsz128rmkz_vmovapsz128rrkz_test() #0 { ret void } + define void @stack_fold_vmovapsz256rmkz_vmovapsz256rrkz_test() #0 { ret void } + define void @stack_fold_vmovddupz128rmkz_vmovddupz128rrkz_test() #0 { ret void } + define void @stack_fold_vmovddupz256rmkz_vmovddupz256rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqa32z128rmkz_vmovdqa32z128rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqa32z256rmkz_vmovdqa32z256rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqa64z128rmkz_vmovdqa64z128rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqa64z256rmkz_vmovdqa64z256rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu32z128rmkz_vmovdqu32z128rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu32z256rmkz_vmovdqu32z256rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu64z128rmkz_vmovdqu64z128rrkz_test() #0 { ret void } + define void @stack_fold_vmovdqu64z256rmkz_vmovdqu64z256rrkz_test() #0 { ret void } + define void @stack_fold_vmovshdupz128rmkz_vmovshdupz128rrkz_test() #0 { ret void } + define void @stack_fold_vmovshdupz256rmkz_vmovshdupz256rrkz_test() #0 { ret void } + define void @stack_fold_vmovsldupz128rmkz_vmovsldupz128rrkz_test() #0 { ret void } + define void @stack_fold_vmovsldupz256rmkz_vmovsldupz256rrkz_test() #0 { ret void } + define void @stack_fold_vmovupdz128rmkz_vmovupdz128rrkz_test() #0 { ret void } + define void @stack_fold_vmovupdz256rmkz_vmovupdz256rrkz_test() #0 { ret void } + define void @stack_fold_vmovupsz128rmkz_vmovupsz128rrkz_test() #0 { ret void } + define void @stack_fold_vmovupsz256rmkz_vmovupsz256rrkz_test() #0 { ret void } + define void @stack_fold_vmulpdz128rm_vmulpdz128rr_test() #0 { ret void } + define void @stack_fold_vmulpdz256rm_vmulpdz256rr_test() #0 { ret void } + define void @stack_fold_vmulpsz128rm_vmulpsz128rr_test() #0 { ret void } + define void @stack_fold_vmulpsz256rm_vmulpsz256rr_test() #0 { ret void } + define void @stack_fold_vpabsdz128rmkz_vpabsdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpabsdz256rmkz_vpabsdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpabsqz128rmkz_vpabsqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpabsqz256rmkz_vpabsqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpadddz128rm_vpadddz128rr_test() #0 { ret void } + define void @stack_fold_vpadddz256rm_vpadddz256rr_test() #0 { ret void } + define void @stack_fold_vpaddqz128rm_vpaddqz128rr_test() #0 { ret void } + define void @stack_fold_vpaddqz256rm_vpaddqz256rr_test() #0 { ret void } + define void @stack_fold_vpanddz128rm_vpanddz128rr_test() #0 { ret void } + define void @stack_fold_vpanddz256rm_vpanddz256rr_test() #0 { ret void } + define void @stack_fold_vpandndz128rm_vpandndz128rr_test() #0 { ret void } + define void @stack_fold_vpandndz256rm_vpandndz256rr_test() #0 { ret void } + define void @stack_fold_vpandnqz128rm_vpandnqz128rr_test() #0 { ret void } + define void @stack_fold_vpandnqz256rm_vpandnqz256rr_test() #0 { ret void } + define void @stack_fold_vpandqz128rm_vpandqz128rr_test() #0 { ret void } + define void @stack_fold_vpandqz256rm_vpandqz256rr_test() #0 { ret void } + define void @stack_fold_vpblendmdz128rm_vpblendmdz128rr_test() #0 { ret void } + define void @stack_fold_vpblendmdz256rm_vpblendmdz256rr_test() #0 { ret void } + define void @stack_fold_vpblendmqz128rm_vpblendmqz128rr_test() #0 { ret void } + define void @stack_fold_vpblendmqz256rm_vpblendmqz256rr_test() #0 { ret void } + define void @stack_fold_vpbroadcastdz128mkz_vpbroadcastdz128rkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastdz256mkz_vpbroadcastdz256rkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastqz128mkz_vpbroadcastqz128rkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastqz256mkz_vpbroadcastqz256rkz_test() #0 { ret void } + define void @stack_fold_vpcmpdz128rmi_vpcmpdz128rri_test() #0 { ret void } + define void @stack_fold_vpcmpdz128rmi_alt_vpcmpdz128rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpdz256rmi_vpcmpdz256rri_test() #0 { ret void } + define void @stack_fold_vpcmpdz256rmi_alt_vpcmpdz256rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpeqdz128rm_vpcmpeqdz128rr_test() #0 { ret void } + define void @stack_fold_vpcmpeqdz256rm_vpcmpeqdz256rr_test() #0 { ret void } + define void @stack_fold_vpcmpeqqz128rm_vpcmpeqqz128rr_test() #0 { ret void } + define void @stack_fold_vpcmpeqqz256rm_vpcmpeqqz256rr_test() #0 { ret void } + define void @stack_fold_vpcmpgtdz128rm_vpcmpgtdz128rr_test() #0 { ret void } + define void @stack_fold_vpcmpgtdz256rm_vpcmpgtdz256rr_test() #0 { ret void } + define void @stack_fold_vpcmpgtqz128rm_vpcmpgtqz128rr_test() #0 { ret void } + define void @stack_fold_vpcmpgtqz256rm_vpcmpgtqz256rr_test() #0 { ret void } + define void @stack_fold_vpcmpqz128rmi_vpcmpqz128rri_test() #0 { ret void } + define void @stack_fold_vpcmpqz128rmi_alt_vpcmpqz128rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpqz256rmi_vpcmpqz256rri_test() #0 { ret void } + define void @stack_fold_vpcmpqz256rmi_alt_vpcmpqz256rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpudz128rmi_vpcmpudz128rri_test() #0 { ret void } + define void @stack_fold_vpcmpudz128rmi_alt_vpcmpudz128rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpudz256rmi_vpcmpudz256rri_test() #0 { ret void } + define void @stack_fold_vpcmpudz256rmi_alt_vpcmpudz256rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuqz128rmi_vpcmpuqz128rri_test() #0 { ret void } + define void @stack_fold_vpcmpuqz128rmi_alt_vpcmpuqz128rri_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuqz256rmi_vpcmpuqz256rri_test() #0 { ret void } + define void @stack_fold_vpcmpuqz256rmi_alt_vpcmpuqz256rri_alt_test() #0 { ret void } + define void @stack_fold_vpermdz256rm_vpermdz256rr_test() #0 { ret void } + define void @stack_fold_vpermilpdz128mikz_vpermilpdz128rikz_test() #0 { ret void } + define void @stack_fold_vpermilpdz128rm_vpermilpdz128rr_test() #0 { ret void } + define void @stack_fold_vpermilpdz256mikz_vpermilpdz256rikz_test() #0 { ret void } + define void @stack_fold_vpermilpdz256rm_vpermilpdz256rr_test() #0 { ret void } + define void @stack_fold_vpermilpsz128mikz_vpermilpsz128rikz_test() #0 { ret void } + define void @stack_fold_vpermilpsz128rm_vpermilpsz128rr_test() #0 { ret void } + define void @stack_fold_vpermilpsz256mikz_vpermilpsz256rikz_test() #0 { ret void } + define void @stack_fold_vpermilpsz256rm_vpermilpsz256rr_test() #0 { ret void } + define void @stack_fold_vpermpdz256mikz_vpermpdz256rikz_test() #0 { ret void } + define void @stack_fold_vpermpdz256rm_vpermpdz256rr_test() #0 { ret void } + define void @stack_fold_vpermpsz256rm_vpermpsz256rr_test() #0 { ret void } + define void @stack_fold_vpermqz256mikz_vpermqz256rikz_test() #0 { ret void } + define void @stack_fold_vpermqz256rm_vpermqz256rr_test() #0 { ret void } + define void @stack_fold_vpexpanddz128rmkz_vpexpanddz128rrkz_test() #0 { ret void } + define void @stack_fold_vpexpanddz256rmkz_vpexpanddz256rrkz_test() #0 { ret void } + define void @stack_fold_vpexpandqz128rmkz_vpexpandqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpexpandqz256rmkz_vpexpandqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxsdz128rm_vpmaxsdz128rr_test() #0 { ret void } + define void @stack_fold_vpmaxsdz256rm_vpmaxsdz256rr_test() #0 { ret void } + define void @stack_fold_vpmaxsqz128rm_vpmaxsqz128rr_test() #0 { ret void } + define void @stack_fold_vpmaxsqz256rm_vpmaxsqz256rr_test() #0 { ret void } + define void @stack_fold_vpmaxudz128rm_vpmaxudz128rr_test() #0 { ret void } + define void @stack_fold_vpmaxudz256rm_vpmaxudz256rr_test() #0 { ret void } + define void @stack_fold_vpmaxuqz128rm_vpmaxuqz128rr_test() #0 { ret void } + define void @stack_fold_vpmaxuqz256rm_vpmaxuqz256rr_test() #0 { ret void } + define void @stack_fold_vpminsdz128rm_vpminsdz128rr_test() #0 { ret void } + define void @stack_fold_vpminsdz256rm_vpminsdz256rr_test() #0 { ret void } + define void @stack_fold_vpminsqz128rm_vpminsqz128rr_test() #0 { ret void } + define void @stack_fold_vpminsqz256rm_vpminsqz256rr_test() #0 { ret void } + define void @stack_fold_vpminudz128rm_vpminudz128rr_test() #0 { ret void } + define void @stack_fold_vpminudz256rm_vpminudz256rr_test() #0 { ret void } + define void @stack_fold_vpminuqz128rm_vpminuqz128rr_test() #0 { ret void } + define void @stack_fold_vpminuqz256rm_vpminuqz256rr_test() #0 { ret void } + define void @stack_fold_vpmovsxbdz128rmkz_vpmovsxbdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxbdz256rmkz_vpmovsxbdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxbqz128rmkz_vpmovsxbqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxbqz256rmkz_vpmovsxbqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxdqz128rmkz_vpmovsxdqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxdqz256rmkz_vpmovsxdqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxwdz128rmkz_vpmovsxwdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxwdz256rmkz_vpmovsxwdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxwqz128rmkz_vpmovsxwqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxwqz256rmkz_vpmovsxwqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxbdz128rmkz_vpmovzxbdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxbdz256rmkz_vpmovzxbdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxbqz128rmkz_vpmovzxbqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxbqz256rmkz_vpmovzxbqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxdqz128rmkz_vpmovzxdqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxdqz256rmkz_vpmovzxdqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxwdz128rmkz_vpmovzxwdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxwdz256rmkz_vpmovzxwdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxwqz128rmkz_vpmovzxwqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmovzxwqz256rmkz_vpmovzxwqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmuldqz128rm_vpmuldqz128rr_test() #0 { ret void } + define void @stack_fold_vpmuldqz256rm_vpmuldqz256rr_test() #0 { ret void } + define void @stack_fold_vpmulldz128rm_vpmulldz128rr_test() #0 { ret void } + define void @stack_fold_vpmulldz256rm_vpmulldz256rr_test() #0 { ret void } + define void @stack_fold_vpmuludqz128rm_vpmuludqz128rr_test() #0 { ret void } + define void @stack_fold_vpmuludqz256rm_vpmuludqz256rr_test() #0 { ret void } + define void @stack_fold_vpordz128rm_vpordz128rr_test() #0 { ret void } + define void @stack_fold_vpordz256rm_vpordz256rr_test() #0 { ret void } + define void @stack_fold_vporqz128rm_vporqz128rr_test() #0 { ret void } + define void @stack_fold_vporqz256rm_vporqz256rr_test() #0 { ret void } + define void @stack_fold_vproldz128mikz_vproldz128rikz_test() #0 { ret void } + define void @stack_fold_vproldz256mikz_vproldz256rikz_test() #0 { ret void } + define void @stack_fold_vprolqz128mikz_vprolqz128rikz_test() #0 { ret void } + define void @stack_fold_vprolqz256mikz_vprolqz256rikz_test() #0 { ret void } + define void @stack_fold_vprolvdz128rm_vprolvdz128rr_test() #0 { ret void } + define void @stack_fold_vprolvdz256rm_vprolvdz256rr_test() #0 { ret void } + define void @stack_fold_vprolvqz128rm_vprolvqz128rr_test() #0 { ret void } + define void @stack_fold_vprolvqz256rm_vprolvqz256rr_test() #0 { ret void } + define void @stack_fold_vprordz128mikz_vprordz128rikz_test() #0 { ret void } + define void @stack_fold_vprordz256mikz_vprordz256rikz_test() #0 { ret void } + define void @stack_fold_vprorqz128mikz_vprorqz128rikz_test() #0 { ret void } + define void @stack_fold_vprorqz256mikz_vprorqz256rikz_test() #0 { ret void } + define void @stack_fold_vprorvdz128rm_vprorvdz128rr_test() #0 { ret void } + define void @stack_fold_vprorvdz256rm_vprorvdz256rr_test() #0 { ret void } + define void @stack_fold_vprorvqz128rm_vprorvqz128rr_test() #0 { ret void } + define void @stack_fold_vprorvqz256rm_vprorvqz256rr_test() #0 { ret void } + define void @stack_fold_vpshufdz128mikz_vpshufdz128rikz_test() #0 { ret void } + define void @stack_fold_vpshufdz256mikz_vpshufdz256rikz_test() #0 { ret void } + define void @stack_fold_vpslldz128mikz_vpslldz128rikz_test() #0 { ret void } + define void @stack_fold_vpslldz128rm_vpslldz128rr_test() #0 { ret void } + define void @stack_fold_vpslldz256mikz_vpslldz256rikz_test() #0 { ret void } + define void @stack_fold_vpslldz256rm_vpslldz256rr_test() #0 { ret void } + define void @stack_fold_vpsllqz128mikz_vpsllqz128rikz_test() #0 { ret void } + define void @stack_fold_vpsllqz128rm_vpsllqz128rr_test() #0 { ret void } + define void @stack_fold_vpsllqz256mikz_vpsllqz256rikz_test() #0 { ret void } + define void @stack_fold_vpsllqz256rm_vpsllqz256rr_test() #0 { ret void } + define void @stack_fold_vpsllvdz128rm_vpsllvdz128rr_test() #0 { ret void } + define void @stack_fold_vpsllvdz256rm_vpsllvdz256rr_test() #0 { ret void } + define void @stack_fold_vpsllvqz128rm_vpsllvqz128rr_test() #0 { ret void } + define void @stack_fold_vpsllvqz256rm_vpsllvqz256rr_test() #0 { ret void } + define void @stack_fold_vpsradz128mikz_vpsradz128rikz_test() #0 { ret void } + define void @stack_fold_vpsradz128rm_vpsradz128rr_test() #0 { ret void } + define void @stack_fold_vpsradz256mikz_vpsradz256rikz_test() #0 { ret void } + define void @stack_fold_vpsradz256rm_vpsradz256rr_test() #0 { ret void } + define void @stack_fold_vpsraqz128mikz_vpsraqz128rikz_test() #0 { ret void } + define void @stack_fold_vpsraqz128rm_vpsraqz128rr_test() #0 { ret void } + define void @stack_fold_vpsraqz256mikz_vpsraqz256rikz_test() #0 { ret void } + define void @stack_fold_vpsraqz256rm_vpsraqz256rr_test() #0 { ret void } + define void @stack_fold_vpsravdz128rm_vpsravdz128rr_test() #0 { ret void } + define void @stack_fold_vpsravdz256rm_vpsravdz256rr_test() #0 { ret void } + define void @stack_fold_vpsravqz128rm_vpsravqz128rr_test() #0 { ret void } + define void @stack_fold_vpsravqz256rm_vpsravqz256rr_test() #0 { ret void } + define void @stack_fold_vpsrldz128mikz_vpsrldz128rikz_test() #0 { ret void } + define void @stack_fold_vpsrldz128rm_vpsrldz128rr_test() #0 { ret void } + define void @stack_fold_vpsrldz256mikz_vpsrldz256rikz_test() #0 { ret void } + define void @stack_fold_vpsrldz256rm_vpsrldz256rr_test() #0 { ret void } + define void @stack_fold_vpsrlqz128mikz_vpsrlqz128rikz_test() #0 { ret void } + define void @stack_fold_vpsrlqz128rm_vpsrlqz128rr_test() #0 { ret void } + define void @stack_fold_vpsrlqz256mikz_vpsrlqz256rikz_test() #0 { ret void } + define void @stack_fold_vpsrlqz256rm_vpsrlqz256rr_test() #0 { ret void } + define void @stack_fold_vpsrlvdz128rm_vpsrlvdz128rr_test() #0 { ret void } + define void @stack_fold_vpsrlvdz256rm_vpsrlvdz256rr_test() #0 { ret void } + define void @stack_fold_vpsrlvqz128rm_vpsrlvqz128rr_test() #0 { ret void } + define void @stack_fold_vpsrlvqz256rm_vpsrlvqz256rr_test() #0 { ret void } + define void @stack_fold_vpsubdz128rm_vpsubdz128rr_test() #0 { ret void } + define void @stack_fold_vpsubdz256rm_vpsubdz256rr_test() #0 { ret void } + define void @stack_fold_vpsubqz128rm_vpsubqz128rr_test() #0 { ret void } + define void @stack_fold_vpsubqz256rm_vpsubqz256rr_test() #0 { ret void } + define void @stack_fold_vptestmdz128rm_vptestmdz128rr_test() #0 { ret void } + define void @stack_fold_vptestmdz256rm_vptestmdz256rr_test() #0 { ret void } + define void @stack_fold_vptestmqz128rm_vptestmqz128rr_test() #0 { ret void } + define void @stack_fold_vptestmqz256rm_vptestmqz256rr_test() #0 { ret void } + define void @stack_fold_vptestnmdz128rm_vptestnmdz128rr_test() #0 { ret void } + define void @stack_fold_vptestnmdz256rm_vptestnmdz256rr_test() #0 { ret void } + define void @stack_fold_vptestnmqz128rm_vptestnmqz128rr_test() #0 { ret void } + define void @stack_fold_vptestnmqz256rm_vptestnmqz256rr_test() #0 { ret void } + define void @stack_fold_vpunpckhdqz128rm_vpunpckhdqz128rr_test() #0 { ret void } + define void @stack_fold_vpunpckhdqz256rm_vpunpckhdqz256rr_test() #0 { ret void } + define void @stack_fold_vpunpckhqdqz128rm_vpunpckhqdqz128rr_test() #0 { ret void } + define void @stack_fold_vpunpckhqdqz256rm_vpunpckhqdqz256rr_test() #0 { ret void } + define void @stack_fold_vpunpckldqz128rm_vpunpckldqz128rr_test() #0 { ret void } + define void @stack_fold_vpunpckldqz256rm_vpunpckldqz256rr_test() #0 { ret void } + define void @stack_fold_vpunpcklqdqz128rm_vpunpcklqdqz128rr_test() #0 { ret void } + define void @stack_fold_vpunpcklqdqz256rm_vpunpcklqdqz256rr_test() #0 { ret void } + define void @stack_fold_vpxordz128rm_vpxordz128rr_test() #0 { ret void } + define void @stack_fold_vpxordz256rm_vpxordz256rr_test() #0 { ret void } + define void @stack_fold_vpxorqz128rm_vpxorqz128rr_test() #0 { ret void } + define void @stack_fold_vpxorqz256rm_vpxorqz256rr_test() #0 { ret void } + define void @stack_fold_vrcp14pdz128mkz_vrcp14pdz128rkz_test() #0 { ret void } + define void @stack_fold_vrcp14pdz256mkz_vrcp14pdz256rkz_test() #0 { ret void } + define void @stack_fold_vrcp14psz128mkz_vrcp14psz128rkz_test() #0 { ret void } + define void @stack_fold_vrcp14psz256mkz_vrcp14psz256rkz_test() #0 { ret void } + define void @stack_fold_vrndscalepdz128rmikz_vrndscalepdz128rrikz_test() #0 { ret void } + define void @stack_fold_vrndscalepdz256rmikz_vrndscalepdz256rrikz_test() #0 { ret void } + define void @stack_fold_vrndscalepsz128rmikz_vrndscalepsz128rrikz_test() #0 { ret void } + define void @stack_fold_vrndscalepsz256rmikz_vrndscalepsz256rrikz_test() #0 { ret void } + define void @stack_fold_vrsqrt14pdz128mkz_vrsqrt14pdz128rkz_test() #0 { ret void } + define void @stack_fold_vrsqrt14pdz256mkz_vrsqrt14pdz256rkz_test() #0 { ret void } + define void @stack_fold_vrsqrt14psz128mkz_vrsqrt14psz128rkz_test() #0 { ret void } + define void @stack_fold_vrsqrt14psz256mkz_vrsqrt14psz256rkz_test() #0 { ret void } + define void @stack_fold_vscalefpdz128rm_vscalefpdz128rr_test() #0 { ret void } + define void @stack_fold_vscalefpdz256rm_vscalefpdz256rr_test() #0 { ret void } + define void @stack_fold_vscalefpsz128rm_vscalefpsz128rr_test() #0 { ret void } + define void @stack_fold_vscalefpsz256rm_vscalefpsz256rr_test() #0 { ret void } + define void @stack_fold_vshuff32x4z256rmi_vshuff32x4z256rri_test() #0 { ret void } + define void @stack_fold_vshuff64x2z256rmi_vshuff64x2z256rri_test() #0 { ret void } + define void @stack_fold_vshufi32x4z256rmi_vshufi32x4z256rri_test() #0 { ret void } + define void @stack_fold_vshufi64x2z256rmi_vshufi64x2z256rri_test() #0 { ret void } + define void @stack_fold_vshufpdz128rmi_vshufpdz128rri_test() #0 { ret void } + define void @stack_fold_vshufpdz256rmi_vshufpdz256rri_test() #0 { ret void } + define void @stack_fold_vshufpsz128rmi_vshufpsz128rri_test() #0 { ret void } + define void @stack_fold_vshufpsz256rmi_vshufpsz256rri_test() #0 { ret void } + define void @stack_fold_vsqrtpdz128mkz_vsqrtpdz128rkz_test() #0 { ret void } + define void @stack_fold_vsqrtpdz256mkz_vsqrtpdz256rkz_test() #0 { ret void } + define void @stack_fold_vsqrtpsz128mkz_vsqrtpsz128rkz_test() #0 { ret void } + define void @stack_fold_vsqrtpsz256mkz_vsqrtpsz256rkz_test() #0 { ret void } + define void @stack_fold_vsubpdz128rm_vsubpdz128rr_test() #0 { ret void } + define void @stack_fold_vsubpdz256rm_vsubpdz256rr_test() #0 { ret void } + define void @stack_fold_vsubpsz128rm_vsubpsz128rr_test() #0 { ret void } + define void @stack_fold_vsubpsz256rm_vsubpsz256rr_test() #0 { ret void } + define void @stack_fold_vunpckhpdz128rm_vunpckhpdz128rr_test() #0 { ret void } + define void @stack_fold_vunpckhpdz256rm_vunpckhpdz256rr_test() #0 { ret void } + define void @stack_fold_vunpckhpsz128rm_vunpckhpsz128rr_test() #0 { ret void } + define void @stack_fold_vunpckhpsz256rm_vunpckhpsz256rr_test() #0 { ret void } + define void @stack_fold_vunpcklpdz128rm_vunpcklpdz128rr_test() #0 { ret void } + define void @stack_fold_vunpcklpdz256rm_vunpcklpdz256rr_test() #0 { ret void } + define void @stack_fold_vunpcklpsz128rm_vunpcklpsz128rr_test() #0 { ret void } + define void @stack_fold_vunpcklpsz256rm_vunpcklpsz256rr_test() #0 { ret void } + define void @stack_fold_vaddpdz128rmkz_vaddpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vaddpdz256rmkz_vaddpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vaddpsz128rmkz_vaddpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vaddpsz256rmkz_vaddpsz256rrkz_test() #0 { ret void } + define void @stack_fold_valigndz128rmikz_valigndz128rrikz_test() #0 { ret void } + define void @stack_fold_valigndz256rmikz_valigndz256rrikz_test() #0 { ret void } + define void @stack_fold_valignqz128rmikz_valignqz128rrikz_test() #0 { ret void } + define void @stack_fold_valignqz256rmikz_valignqz256rrikz_test() #0 { ret void } + define void @stack_fold_vblendmpdz128rmk_vblendmpdz128rrk_test() #0 { ret void } + define void @stack_fold_vblendmpdz128rmkz_vblendmpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vblendmpdz256rmk_vblendmpdz256rrk_test() #0 { ret void } + define void @stack_fold_vblendmpdz256rmkz_vblendmpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vblendmpsz128rmk_vblendmpsz128rrk_test() #0 { ret void } + define void @stack_fold_vblendmpsz128rmkz_vblendmpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vblendmpsz256rmk_vblendmpsz256rrk_test() #0 { ret void } + define void @stack_fold_vblendmpsz256rmkz_vblendmpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vbroadcastsdz256mk_vbroadcastsdz256rk_test() #0 { ret void } + define void @stack_fold_vbroadcastssz128mk_vbroadcastssz128rk_test() #0 { ret void } + define void @stack_fold_vbroadcastssz256mk_vbroadcastssz256rk_test() #0 { ret void } + define void @stack_fold_vcmppdz128rmi_altk_vcmppdz128rri_altk_test() #0 { ret void } + define void @stack_fold_vcmppdz128rmik_vcmppdz128rrik_test() #0 { ret void } + define void @stack_fold_vcmppdz256rmi_altk_vcmppdz256rri_altk_test() #0 { ret void } + define void @stack_fold_vcmppdz256rmik_vcmppdz256rrik_test() #0 { ret void } + define void @stack_fold_vcmppsz128rmi_altk_vcmppsz128rri_altk_test() #0 { ret void } + define void @stack_fold_vcmppsz128rmik_vcmppsz128rrik_test() #0 { ret void } + define void @stack_fold_vcmppsz256rmi_altk_vcmppsz256rri_altk_test() #0 { ret void } + define void @stack_fold_vcmppsz256rmik_vcmppsz256rrik_test() #0 { ret void } + define void @stack_fold_vcvtdq2pdz128rmk_vcvtdq2pdz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtdq2pdz256rmk_vcvtdq2pdz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtdq2psz128rmk_vcvtdq2psz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtdq2psz256rmk_vcvtdq2psz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2dqz128rmk_vcvtpd2dqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2dqz256rmk_vcvtpd2dqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2psz128rmk_vcvtpd2psz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2psz256rmk_vcvtpd2psz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2udqz128rmk_vcvtpd2udqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtpd2udqz256rmk_vcvtpd2udqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtph2psz128rmk_vcvtph2psz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtph2psz256rmk_vcvtph2psz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtps2dqz128rmk_vcvtps2dqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtps2dqz256rmk_vcvtps2dqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtps2pdz128rmk_vcvtps2pdz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtps2pdz256rmk_vcvtps2pdz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtps2udqz128rmk_vcvtps2udqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtps2udqz256rmk_vcvtps2udqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqz128rmk_vcvttpd2dqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2dqz256rmk_vcvttpd2dqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqz128rmk_vcvttpd2udqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvttpd2udqz256rmk_vcvttpd2udqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvttps2dqz128rmk_vcvttps2dqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvttps2dqz256rmk_vcvttps2dqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvttps2udqz128rmk_vcvttps2udqz128rrk_test() #0 { ret void } + define void @stack_fold_vcvttps2udqz256rmk_vcvttps2udqz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtudq2pdz128rmk_vcvtudq2pdz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtudq2pdz256rmk_vcvtudq2pdz256rrk_test() #0 { ret void } + define void @stack_fold_vcvtudq2psz128rmk_vcvtudq2psz128rrk_test() #0 { ret void } + define void @stack_fold_vcvtudq2psz256rmk_vcvtudq2psz256rrk_test() #0 { ret void } + define void @stack_fold_vdivpdz128rmkz_vdivpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vdivpdz256rmkz_vdivpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vdivpsz128rmkz_vdivpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vdivpsz256rmkz_vdivpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vexpandpdz128rmk_vexpandpdz128rrk_test() #0 { ret void } + define void @stack_fold_vexpandpdz256rmk_vexpandpdz256rrk_test() #0 { ret void } + define void @stack_fold_vexpandpsz128rmk_vexpandpsz128rrk_test() #0 { ret void } + define void @stack_fold_vexpandpsz256rmk_vexpandpsz256rrk_test() #0 { ret void } + define void @stack_fold_vfixupimmpdz128rmi_vfixupimmpdz128rri_test() #0 { ret void } + define void @stack_fold_vfixupimmpdz256rmi_vfixupimmpdz256rri_test() #0 { ret void } + define void @stack_fold_vfixupimmpsz128rmi_vfixupimmpsz128rri_test() #0 { ret void } + define void @stack_fold_vfixupimmpsz256rmi_vfixupimmpsz256rri_test() #0 { ret void } + define void @stack_fold_vfmadd132pdz128m_vfmadd132pdz128r_test() #0 { ret void } + define void @stack_fold_vfmadd132pdz256m_vfmadd132pdz256r_test() #0 { ret void } + define void @stack_fold_vfmadd132psz128m_vfmadd132psz128r_test() #0 { ret void } + define void @stack_fold_vfmadd132psz256m_vfmadd132psz256r_test() #0 { ret void } + define void @stack_fold_vfmadd213pdz128m_vfmadd213pdz128r_test() #0 { ret void } + define void @stack_fold_vfmadd213pdz256m_vfmadd213pdz256r_test() #0 { ret void } + define void @stack_fold_vfmadd213psz128m_vfmadd213psz128r_test() #0 { ret void } + define void @stack_fold_vfmadd213psz256m_vfmadd213psz256r_test() #0 { ret void } + define void @stack_fold_vfmadd231pdz128m_vfmadd231pdz128r_test() #0 { ret void } + define void @stack_fold_vfmadd231pdz256m_vfmadd231pdz256r_test() #0 { ret void } + define void @stack_fold_vfmadd231psz128m_vfmadd231psz128r_test() #0 { ret void } + define void @stack_fold_vfmadd231psz256m_vfmadd231psz256r_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pdz128m_vfmaddsub132pdz128r_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pdz256m_vfmaddsub132pdz256r_test() #0 { ret void } + define void @stack_fold_vfmaddsub132psz128m_vfmaddsub132psz128r_test() #0 { ret void } + define void @stack_fold_vfmaddsub132psz256m_vfmaddsub132psz256r_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pdz128m_vfmaddsub213pdz128r_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pdz256m_vfmaddsub213pdz256r_test() #0 { ret void } + define void @stack_fold_vfmaddsub213psz128m_vfmaddsub213psz128r_test() #0 { ret void } + define void @stack_fold_vfmaddsub213psz256m_vfmaddsub213psz256r_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pdz128m_vfmaddsub231pdz128r_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pdz256m_vfmaddsub231pdz256r_test() #0 { ret void } + define void @stack_fold_vfmaddsub231psz128m_vfmaddsub231psz128r_test() #0 { ret void } + define void @stack_fold_vfmaddsub231psz256m_vfmaddsub231psz256r_test() #0 { ret void } + define void @stack_fold_vfmsub132pdz128m_vfmsub132pdz128r_test() #0 { ret void } + define void @stack_fold_vfmsub132pdz256m_vfmsub132pdz256r_test() #0 { ret void } + define void @stack_fold_vfmsub132psz128m_vfmsub132psz128r_test() #0 { ret void } + define void @stack_fold_vfmsub132psz256m_vfmsub132psz256r_test() #0 { ret void } + define void @stack_fold_vfmsub213pdz128m_vfmsub213pdz128r_test() #0 { ret void } + define void @stack_fold_vfmsub213pdz256m_vfmsub213pdz256r_test() #0 { ret void } + define void @stack_fold_vfmsub213psz128m_vfmsub213psz128r_test() #0 { ret void } + define void @stack_fold_vfmsub213psz256m_vfmsub213psz256r_test() #0 { ret void } + define void @stack_fold_vfmsub231pdz128m_vfmsub231pdz128r_test() #0 { ret void } + define void @stack_fold_vfmsub231pdz256m_vfmsub231pdz256r_test() #0 { ret void } + define void @stack_fold_vfmsub231psz128m_vfmsub231psz128r_test() #0 { ret void } + define void @stack_fold_vfmsub231psz256m_vfmsub231psz256r_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pdz128m_vfmsubadd132pdz128r_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pdz256m_vfmsubadd132pdz256r_test() #0 { ret void } + define void @stack_fold_vfmsubadd132psz128m_vfmsubadd132psz128r_test() #0 { ret void } + define void @stack_fold_vfmsubadd132psz256m_vfmsubadd132psz256r_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pdz128m_vfmsubadd213pdz128r_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pdz256m_vfmsubadd213pdz256r_test() #0 { ret void } + define void @stack_fold_vfmsubadd213psz128m_vfmsubadd213psz128r_test() #0 { ret void } + define void @stack_fold_vfmsubadd213psz256m_vfmsubadd213psz256r_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pdz128m_vfmsubadd231pdz128r_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pdz256m_vfmsubadd231pdz256r_test() #0 { ret void } + define void @stack_fold_vfmsubadd231psz128m_vfmsubadd231psz128r_test() #0 { ret void } + define void @stack_fold_vfmsubadd231psz256m_vfmsubadd231psz256r_test() #0 { ret void } + define void @stack_fold_vfnmadd132pdz128m_vfnmadd132pdz128r_test() #0 { ret void } + define void @stack_fold_vfnmadd132pdz256m_vfnmadd132pdz256r_test() #0 { ret void } + define void @stack_fold_vfnmadd132psz128m_vfnmadd132psz128r_test() #0 { ret void } + define void @stack_fold_vfnmadd132psz256m_vfnmadd132psz256r_test() #0 { ret void } + define void @stack_fold_vfnmadd213pdz128m_vfnmadd213pdz128r_test() #0 { ret void } + define void @stack_fold_vfnmadd213pdz256m_vfnmadd213pdz256r_test() #0 { ret void } + define void @stack_fold_vfnmadd213psz128m_vfnmadd213psz128r_test() #0 { ret void } + define void @stack_fold_vfnmadd213psz256m_vfnmadd213psz256r_test() #0 { ret void } + define void @stack_fold_vfnmadd231pdz128m_vfnmadd231pdz128r_test() #0 { ret void } + define void @stack_fold_vfnmadd231pdz256m_vfnmadd231pdz256r_test() #0 { ret void } + define void @stack_fold_vfnmadd231psz128m_vfnmadd231psz128r_test() #0 { ret void } + define void @stack_fold_vfnmadd231psz256m_vfnmadd231psz256r_test() #0 { ret void } + define void @stack_fold_vfnmsub132pdz128m_vfnmsub132pdz128r_test() #0 { ret void } + define void @stack_fold_vfnmsub132pdz256m_vfnmsub132pdz256r_test() #0 { ret void } + define void @stack_fold_vfnmsub132psz128m_vfnmsub132psz128r_test() #0 { ret void } + define void @stack_fold_vfnmsub132psz256m_vfnmsub132psz256r_test() #0 { ret void } + define void @stack_fold_vfnmsub213pdz128m_vfnmsub213pdz128r_test() #0 { ret void } + define void @stack_fold_vfnmsub213pdz256m_vfnmsub213pdz256r_test() #0 { ret void } + define void @stack_fold_vfnmsub213psz128m_vfnmsub213psz128r_test() #0 { ret void } + define void @stack_fold_vfnmsub213psz256m_vfnmsub213psz256r_test() #0 { ret void } + define void @stack_fold_vfnmsub231pdz128m_vfnmsub231pdz128r_test() #0 { ret void } + define void @stack_fold_vfnmsub231pdz256m_vfnmsub231pdz256r_test() #0 { ret void } + define void @stack_fold_vfnmsub231psz128m_vfnmsub231psz128r_test() #0 { ret void } + define void @stack_fold_vfnmsub231psz256m_vfnmsub231psz256r_test() #0 { ret void } + define void @stack_fold_vgetexppdz128mk_vgetexppdz128rk_test() #0 { ret void } + define void @stack_fold_vgetexppdz256mk_vgetexppdz256rk_test() #0 { ret void } + define void @stack_fold_vgetexppsz128mk_vgetexppsz128rk_test() #0 { ret void } + define void @stack_fold_vgetexppsz256mk_vgetexppsz256rk_test() #0 { ret void } + define void @stack_fold_vgetmantpdz128rmik_vgetmantpdz128rrik_test() #0 { ret void } + define void @stack_fold_vgetmantpdz256rmik_vgetmantpdz256rrik_test() #0 { ret void } + define void @stack_fold_vgetmantpsz128rmik_vgetmantpsz128rrik_test() #0 { ret void } + define void @stack_fold_vgetmantpsz256rmik_vgetmantpsz256rrik_test() #0 { ret void } + define void @stack_fold_vinsertf32x4z256rmkz_vinsertf32x4z256rrkz_test() #0 { ret void } + define void @stack_fold_vinserti32x4z256rmkz_vinserti32x4z256rrkz_test() #0 { ret void } + define void @stack_fold_vmaxcpdz128rmkz_vmaxcpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vmaxcpdz256rmkz_vmaxcpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vmaxcpsz128rmkz_vmaxcpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vmaxcpsz256rmkz_vmaxcpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vmaxpdz128rmkz_vmaxpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vmaxpdz256rmkz_vmaxpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vmaxpsz128rmkz_vmaxpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vmaxpsz256rmkz_vmaxpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vmincpdz128rmkz_vmincpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vmincpdz256rmkz_vmincpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vmincpsz128rmkz_vmincpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vmincpsz256rmkz_vmincpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vminpdz128rmkz_vminpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vminpdz256rmkz_vminpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vminpsz128rmkz_vminpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vminpsz256rmkz_vminpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vmovapdz128rmk_vmovapdz128rrk_test() #0 { ret void } + define void @stack_fold_vmovapdz256rmk_vmovapdz256rrk_test() #0 { ret void } + define void @stack_fold_vmovapsz128rmk_vmovapsz128rrk_test() #0 { ret void } + define void @stack_fold_vmovapsz256rmk_vmovapsz256rrk_test() #0 { ret void } + define void @stack_fold_vmovddupz128rmk_vmovddupz128rrk_test() #0 { ret void } + define void @stack_fold_vmovddupz256rmk_vmovddupz256rrk_test() #0 { ret void } + define void @stack_fold_vmovdqa32z128rmk_vmovdqa32z128rrk_test() #0 { ret void } + define void @stack_fold_vmovdqa32z256rmk_vmovdqa32z256rrk_test() #0 { ret void } + define void @stack_fold_vmovdqa64z128rmk_vmovdqa64z128rrk_test() #0 { ret void } + define void @stack_fold_vmovdqa64z256rmk_vmovdqa64z256rrk_test() #0 { ret void } + define void @stack_fold_vmovdqu32z128rmk_vmovdqu32z128rrk_test() #0 { ret void } + define void @stack_fold_vmovdqu32z256rmk_vmovdqu32z256rrk_test() #0 { ret void } + define void @stack_fold_vmovdqu64z128rmk_vmovdqu64z128rrk_test() #0 { ret void } + define void @stack_fold_vmovdqu64z256rmk_vmovdqu64z256rrk_test() #0 { ret void } + define void @stack_fold_vmovshdupz128rmk_vmovshdupz128rrk_test() #0 { ret void } + define void @stack_fold_vmovshdupz256rmk_vmovshdupz256rrk_test() #0 { ret void } + define void @stack_fold_vmovsldupz128rmk_vmovsldupz128rrk_test() #0 { ret void } + define void @stack_fold_vmovsldupz256rmk_vmovsldupz256rrk_test() #0 { ret void } + define void @stack_fold_vmovupdz128rmk_vmovupdz128rrk_test() #0 { ret void } + define void @stack_fold_vmovupdz256rmk_vmovupdz256rrk_test() #0 { ret void } + define void @stack_fold_vmovupsz128rmk_vmovupsz128rrk_test() #0 { ret void } + define void @stack_fold_vmovupsz256rmk_vmovupsz256rrk_test() #0 { ret void } + define void @stack_fold_vmulpdz128rmkz_vmulpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vmulpdz256rmkz_vmulpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vmulpsz128rmkz_vmulpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vmulpsz256rmkz_vmulpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vpabsdz128rmk_vpabsdz128rrk_test() #0 { ret void } + define void @stack_fold_vpabsdz256rmk_vpabsdz256rrk_test() #0 { ret void } + define void @stack_fold_vpabsqz128rmk_vpabsqz128rrk_test() #0 { ret void } + define void @stack_fold_vpabsqz256rmk_vpabsqz256rrk_test() #0 { ret void } + define void @stack_fold_vpadddz128rmkz_vpadddz128rrkz_test() #0 { ret void } + define void @stack_fold_vpadddz256rmkz_vpadddz256rrkz_test() #0 { ret void } + define void @stack_fold_vpaddqz128rmkz_vpaddqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpaddqz256rmkz_vpaddqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpanddz128rmkz_vpanddz128rrkz_test() #0 { ret void } + define void @stack_fold_vpanddz256rmkz_vpanddz256rrkz_test() #0 { ret void } + define void @stack_fold_vpandndz128rmkz_vpandndz128rrkz_test() #0 { ret void } + define void @stack_fold_vpandndz256rmkz_vpandndz256rrkz_test() #0 { ret void } + define void @stack_fold_vpandnqz128rmkz_vpandnqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpandnqz256rmkz_vpandnqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpandqz128rmkz_vpandqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpandqz256rmkz_vpandqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpblendmdz128rmk_vpblendmdz128rrk_test() #0 { ret void } + define void @stack_fold_vpblendmdz128rmkz_vpblendmdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpblendmdz256rmk_vpblendmdz256rrk_test() #0 { ret void } + define void @stack_fold_vpblendmdz256rmkz_vpblendmdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpblendmqz128rmk_vpblendmqz128rrk_test() #0 { ret void } + define void @stack_fold_vpblendmqz128rmkz_vpblendmqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpblendmqz256rmk_vpblendmqz256rrk_test() #0 { ret void } + define void @stack_fold_vpblendmqz256rmkz_vpblendmqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpbroadcastdz128mk_vpbroadcastdz128rk_test() #0 { ret void } + define void @stack_fold_vpbroadcastdz256mk_vpbroadcastdz256rk_test() #0 { ret void } + define void @stack_fold_vpbroadcastqz128mk_vpbroadcastqz128rk_test() #0 { ret void } + define void @stack_fold_vpbroadcastqz256mk_vpbroadcastqz256rk_test() #0 { ret void } + define void @stack_fold_vpcmpdz128rmik_vpcmpdz128rrik_test() #0 { ret void } + define void @stack_fold_vpcmpdz128rmik_alt_vpcmpdz128rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpdz256rmik_vpcmpdz256rrik_test() #0 { ret void } + define void @stack_fold_vpcmpdz256rmik_alt_vpcmpdz256rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpeqdz128rmk_vpcmpeqdz128rrk_test() #0 { ret void } + define void @stack_fold_vpcmpeqdz256rmk_vpcmpeqdz256rrk_test() #0 { ret void } + define void @stack_fold_vpcmpeqqz128rmk_vpcmpeqqz128rrk_test() #0 { ret void } + define void @stack_fold_vpcmpeqqz256rmk_vpcmpeqqz256rrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtdz128rmk_vpcmpgtdz128rrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtdz256rmk_vpcmpgtdz256rrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtqz128rmk_vpcmpgtqz128rrk_test() #0 { ret void } + define void @stack_fold_vpcmpgtqz256rmk_vpcmpgtqz256rrk_test() #0 { ret void } + define void @stack_fold_vpcmpqz128rmik_vpcmpqz128rrik_test() #0 { ret void } + define void @stack_fold_vpcmpqz128rmik_alt_vpcmpqz128rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpqz256rmik_vpcmpqz256rrik_test() #0 { ret void } + define void @stack_fold_vpcmpqz256rmik_alt_vpcmpqz256rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpudz128rmik_vpcmpudz128rrik_test() #0 { ret void } + define void @stack_fold_vpcmpudz128rmik_alt_vpcmpudz128rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpudz256rmik_vpcmpudz256rrik_test() #0 { ret void } + define void @stack_fold_vpcmpudz256rmik_alt_vpcmpudz256rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuqz128rmik_vpcmpuqz128rrik_test() #0 { ret void } + define void @stack_fold_vpcmpuqz128rmik_alt_vpcmpuqz128rrik_alt_test() #0 { ret void } + define void @stack_fold_vpcmpuqz256rmik_vpcmpuqz256rrik_test() #0 { ret void } + define void @stack_fold_vpcmpuqz256rmik_alt_vpcmpuqz256rrik_alt_test() #0 { ret void } + define void @stack_fold_vpermdz256rmkz_vpermdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2d128rm_vpermi2d128rr_test() #0 { ret void } + define void @stack_fold_vpermi2d256rm_vpermi2d256rr_test() #0 { ret void } + define void @stack_fold_vpermi2pd128rm_vpermi2pd128rr_test() #0 { ret void } + define void @stack_fold_vpermi2pd256rm_vpermi2pd256rr_test() #0 { ret void } + define void @stack_fold_vpermi2ps128rm_vpermi2ps128rr_test() #0 { ret void } + define void @stack_fold_vpermi2ps256rm_vpermi2ps256rr_test() #0 { ret void } + define void @stack_fold_vpermi2q128rm_vpermi2q128rr_test() #0 { ret void } + define void @stack_fold_vpermi2q256rm_vpermi2q256rr_test() #0 { ret void } + define void @stack_fold_vpermilpdz128mik_vpermilpdz128rik_test() #0 { ret void } + define void @stack_fold_vpermilpdz128rmkz_vpermilpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpermilpdz256mik_vpermilpdz256rik_test() #0 { ret void } + define void @stack_fold_vpermilpdz256rmkz_vpermilpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpermilpsz128mik_vpermilpsz128rik_test() #0 { ret void } + define void @stack_fold_vpermilpsz128rmkz_vpermilpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vpermilpsz256mik_vpermilpsz256rik_test() #0 { ret void } + define void @stack_fold_vpermilpsz256rmkz_vpermilpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vpermpdz256mik_vpermpdz256rik_test() #0 { ret void } + define void @stack_fold_vpermpdz256rmkz_vpermpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpermpsz256rmkz_vpermpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vpermqz256mik_vpermqz256rik_test() #0 { ret void } + define void @stack_fold_vpermqz256rmkz_vpermqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2d128rm_vpermt2d128rr_test() #0 { ret void } + define void @stack_fold_vpermt2d256rm_vpermt2d256rr_test() #0 { ret void } + define void @stack_fold_vpermt2pd128rm_vpermt2pd128rr_test() #0 { ret void } + define void @stack_fold_vpermt2pd256rm_vpermt2pd256rr_test() #0 { ret void } + define void @stack_fold_vpermt2ps128rm_vpermt2ps128rr_test() #0 { ret void } + define void @stack_fold_vpermt2ps256rm_vpermt2ps256rr_test() #0 { ret void } + define void @stack_fold_vpermt2q128rm_vpermt2q128rr_test() #0 { ret void } + define void @stack_fold_vpermt2q256rm_vpermt2q256rr_test() #0 { ret void } + define void @stack_fold_vpexpanddz128rmk_vpexpanddz128rrk_test() #0 { ret void } + define void @stack_fold_vpexpanddz256rmk_vpexpanddz256rrk_test() #0 { ret void } + define void @stack_fold_vpexpandqz128rmk_vpexpandqz128rrk_test() #0 { ret void } + define void @stack_fold_vpexpandqz256rmk_vpexpandqz256rrk_test() #0 { ret void } + define void @stack_fold_vpmaxsdz128rmkz_vpmaxsdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxsdz256rmkz_vpmaxsdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxsqz128rmkz_vpmaxsqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxsqz256rmkz_vpmaxsqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxudz128rmkz_vpmaxudz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxudz256rmkz_vpmaxudz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxuqz128rmkz_vpmaxuqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxuqz256rmkz_vpmaxuqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpminsdz128rmkz_vpminsdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpminsdz256rmkz_vpminsdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpminsqz128rmkz_vpminsqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpminsqz256rmkz_vpminsqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpminudz128rmkz_vpminudz128rrkz_test() #0 { ret void } + define void @stack_fold_vpminudz256rmkz_vpminudz256rrkz_test() #0 { ret void } + define void @stack_fold_vpminuqz128rmkz_vpminuqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpminuqz256rmkz_vpminuqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmovsxbdz128rmk_vpmovsxbdz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovsxbdz256rmk_vpmovsxbdz256rrk_test() #0 { ret void } + define void @stack_fold_vpmovsxbqz128rmk_vpmovsxbqz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovsxbqz256rmk_vpmovsxbqz256rrk_test() #0 { ret void } + define void @stack_fold_vpmovsxdqz128rmk_vpmovsxdqz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovsxdqz256rmk_vpmovsxdqz256rrk_test() #0 { ret void } + define void @stack_fold_vpmovsxwdz128rmk_vpmovsxwdz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovsxwdz256rmk_vpmovsxwdz256rrk_test() #0 { ret void } + define void @stack_fold_vpmovsxwqz128rmk_vpmovsxwqz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovsxwqz256rmk_vpmovsxwqz256rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxbdz128rmk_vpmovzxbdz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxbdz256rmk_vpmovzxbdz256rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxbqz128rmk_vpmovzxbqz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxbqz256rmk_vpmovzxbqz256rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxdqz128rmk_vpmovzxdqz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxdqz256rmk_vpmovzxdqz256rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxwdz128rmk_vpmovzxwdz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxwdz256rmk_vpmovzxwdz256rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxwqz128rmk_vpmovzxwqz128rrk_test() #0 { ret void } + define void @stack_fold_vpmovzxwqz256rmk_vpmovzxwqz256rrk_test() #0 { ret void } + define void @stack_fold_vpmuldqz128rmkz_vpmuldqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmuldqz256rmkz_vpmuldqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmulldz128rmkz_vpmulldz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmulldz256rmkz_vpmulldz256rrkz_test() #0 { ret void } + define void @stack_fold_vpmuludqz128rmkz_vpmuludqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpmuludqz256rmkz_vpmuludqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpordz128rmkz_vpordz128rrkz_test() #0 { ret void } + define void @stack_fold_vpordz256rmkz_vpordz256rrkz_test() #0 { ret void } + define void @stack_fold_vporqz128rmkz_vporqz128rrkz_test() #0 { ret void } + define void @stack_fold_vporqz256rmkz_vporqz256rrkz_test() #0 { ret void } + define void @stack_fold_vproldz128mik_vproldz128rik_test() #0 { ret void } + define void @stack_fold_vproldz256mik_vproldz256rik_test() #0 { ret void } + define void @stack_fold_vprolqz128mik_vprolqz128rik_test() #0 { ret void } + define void @stack_fold_vprolqz256mik_vprolqz256rik_test() #0 { ret void } + define void @stack_fold_vprolvdz128rmkz_vprolvdz128rrkz_test() #0 { ret void } + define void @stack_fold_vprolvdz256rmkz_vprolvdz256rrkz_test() #0 { ret void } + define void @stack_fold_vprolvqz128rmkz_vprolvqz128rrkz_test() #0 { ret void } + define void @stack_fold_vprolvqz256rmkz_vprolvqz256rrkz_test() #0 { ret void } + define void @stack_fold_vprordz128mik_vprordz128rik_test() #0 { ret void } + define void @stack_fold_vprordz256mik_vprordz256rik_test() #0 { ret void } + define void @stack_fold_vprorqz128mik_vprorqz128rik_test() #0 { ret void } + define void @stack_fold_vprorqz256mik_vprorqz256rik_test() #0 { ret void } + define void @stack_fold_vprorvdz128rmkz_vprorvdz128rrkz_test() #0 { ret void } + define void @stack_fold_vprorvdz256rmkz_vprorvdz256rrkz_test() #0 { ret void } + define void @stack_fold_vprorvqz128rmkz_vprorvqz128rrkz_test() #0 { ret void } + define void @stack_fold_vprorvqz256rmkz_vprorvqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpshufdz128mik_vpshufdz128rik_test() #0 { ret void } + define void @stack_fold_vpshufdz256mik_vpshufdz256rik_test() #0 { ret void } + define void @stack_fold_vpslldz128mik_vpslldz128rik_test() #0 { ret void } + define void @stack_fold_vpslldz128rmkz_vpslldz128rrkz_test() #0 { ret void } + define void @stack_fold_vpslldz256mik_vpslldz256rik_test() #0 { ret void } + define void @stack_fold_vpslldz256rmkz_vpslldz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsllqz128mik_vpsllqz128rik_test() #0 { ret void } + define void @stack_fold_vpsllqz128rmkz_vpsllqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsllqz256mik_vpsllqz256rik_test() #0 { ret void } + define void @stack_fold_vpsllqz256rmkz_vpsllqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsllvdz128rmkz_vpsllvdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsllvdz256rmkz_vpsllvdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsllvqz128rmkz_vpsllvqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsllvqz256rmkz_vpsllvqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsradz128mik_vpsradz128rik_test() #0 { ret void } + define void @stack_fold_vpsradz128rmkz_vpsradz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsradz256mik_vpsradz256rik_test() #0 { ret void } + define void @stack_fold_vpsradz256rmkz_vpsradz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsraqz128mik_vpsraqz128rik_test() #0 { ret void } + define void @stack_fold_vpsraqz128rmkz_vpsraqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsraqz256mik_vpsraqz256rik_test() #0 { ret void } + define void @stack_fold_vpsraqz256rmkz_vpsraqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsravdz128rmkz_vpsravdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsravdz256rmkz_vpsravdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsravqz128rmkz_vpsravqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsravqz256rmkz_vpsravqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsrldz128mik_vpsrldz128rik_test() #0 { ret void } + define void @stack_fold_vpsrldz128rmkz_vpsrldz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsrldz256mik_vpsrldz256rik_test() #0 { ret void } + define void @stack_fold_vpsrldz256rmkz_vpsrldz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsrlqz128mik_vpsrlqz128rik_test() #0 { ret void } + define void @stack_fold_vpsrlqz128rmkz_vpsrlqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsrlqz256mik_vpsrlqz256rik_test() #0 { ret void } + define void @stack_fold_vpsrlqz256rmkz_vpsrlqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsrlvdz128rmkz_vpsrlvdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsrlvdz256rmkz_vpsrlvdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsrlvqz128rmkz_vpsrlvqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsrlvqz256rmkz_vpsrlvqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsubdz128rmkz_vpsubdz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsubdz256rmkz_vpsubdz256rrkz_test() #0 { ret void } + define void @stack_fold_vpsubqz128rmkz_vpsubqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpsubqz256rmkz_vpsubqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpternlogdz128rmi_vpternlogdz128rri_test() #0 { ret void } + define void @stack_fold_vpternlogdz256rmi_vpternlogdz256rri_test() #0 { ret void } + define void @stack_fold_vpternlogqz128rmi_vpternlogqz128rri_test() #0 { ret void } + define void @stack_fold_vpternlogqz256rmi_vpternlogqz256rri_test() #0 { ret void } + define void @stack_fold_vptestmdz128rmk_vptestmdz128rrk_test() #0 { ret void } + define void @stack_fold_vptestmdz256rmk_vptestmdz256rrk_test() #0 { ret void } + define void @stack_fold_vptestmqz128rmk_vptestmqz128rrk_test() #0 { ret void } + define void @stack_fold_vptestmqz256rmk_vptestmqz256rrk_test() #0 { ret void } + define void @stack_fold_vptestnmdz128rmk_vptestnmdz128rrk_test() #0 { ret void } + define void @stack_fold_vptestnmdz256rmk_vptestnmdz256rrk_test() #0 { ret void } + define void @stack_fold_vptestnmqz128rmk_vptestnmqz128rrk_test() #0 { ret void } + define void @stack_fold_vptestnmqz256rmk_vptestnmqz256rrk_test() #0 { ret void } + define void @stack_fold_vpunpckhdqz128rmkz_vpunpckhdqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpunpckhdqz256rmkz_vpunpckhdqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpunpckhqdqz128rmkz_vpunpckhqdqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpunpckhqdqz256rmkz_vpunpckhqdqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpunpckldqz128rmkz_vpunpckldqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpunpckldqz256rmkz_vpunpckldqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpunpcklqdqz128rmkz_vpunpcklqdqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpunpcklqdqz256rmkz_vpunpcklqdqz256rrkz_test() #0 { ret void } + define void @stack_fold_vpxordz128rmkz_vpxordz128rrkz_test() #0 { ret void } + define void @stack_fold_vpxordz256rmkz_vpxordz256rrkz_test() #0 { ret void } + define void @stack_fold_vpxorqz128rmkz_vpxorqz128rrkz_test() #0 { ret void } + define void @stack_fold_vpxorqz256rmkz_vpxorqz256rrkz_test() #0 { ret void } + define void @stack_fold_vrcp14pdz128mk_vrcp14pdz128rk_test() #0 { ret void } + define void @stack_fold_vrcp14pdz256mk_vrcp14pdz256rk_test() #0 { ret void } + define void @stack_fold_vrcp14psz128mk_vrcp14psz128rk_test() #0 { ret void } + define void @stack_fold_vrcp14psz256mk_vrcp14psz256rk_test() #0 { ret void } + define void @stack_fold_vrndscalepdz128rmik_vrndscalepdz128rrik_test() #0 { ret void } + define void @stack_fold_vrndscalepdz256rmik_vrndscalepdz256rrik_test() #0 { ret void } + define void @stack_fold_vrndscalepsz128rmik_vrndscalepsz128rrik_test() #0 { ret void } + define void @stack_fold_vrndscalepsz256rmik_vrndscalepsz256rrik_test() #0 { ret void } + define void @stack_fold_vrsqrt14pdz128mk_vrsqrt14pdz128rk_test() #0 { ret void } + define void @stack_fold_vrsqrt14pdz256mk_vrsqrt14pdz256rk_test() #0 { ret void } + define void @stack_fold_vrsqrt14psz128mk_vrsqrt14psz128rk_test() #0 { ret void } + define void @stack_fold_vrsqrt14psz256mk_vrsqrt14psz256rk_test() #0 { ret void } + define void @stack_fold_vscalefpdz128rmkz_vscalefpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vscalefpdz256rmkz_vscalefpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vscalefpsz128rmkz_vscalefpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vscalefpsz256rmkz_vscalefpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vshuff32x4z256rmikz_vshuff32x4z256rrikz_test() #0 { ret void } + define void @stack_fold_vshuff64x2z256rmikz_vshuff64x2z256rrikz_test() #0 { ret void } + define void @stack_fold_vshufi32x4z256rmikz_vshufi32x4z256rrikz_test() #0 { ret void } + define void @stack_fold_vshufi64x2z256rmikz_vshufi64x2z256rrikz_test() #0 { ret void } + define void @stack_fold_vshufpdz128rmikz_vshufpdz128rrikz_test() #0 { ret void } + define void @stack_fold_vshufpdz256rmikz_vshufpdz256rrikz_test() #0 { ret void } + define void @stack_fold_vshufpsz128rmikz_vshufpsz128rrikz_test() #0 { ret void } + define void @stack_fold_vshufpsz256rmikz_vshufpsz256rrikz_test() #0 { ret void } + define void @stack_fold_vsqrtpdz128mk_vsqrtpdz128rk_test() #0 { ret void } + define void @stack_fold_vsqrtpdz256mk_vsqrtpdz256rk_test() #0 { ret void } + define void @stack_fold_vsqrtpsz128mk_vsqrtpsz128rk_test() #0 { ret void } + define void @stack_fold_vsqrtpsz256mk_vsqrtpsz256rk_test() #0 { ret void } + define void @stack_fold_vsubpdz128rmkz_vsubpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vsubpdz256rmkz_vsubpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vsubpsz128rmkz_vsubpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vsubpsz256rmkz_vsubpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vunpckhpdz128rmkz_vunpckhpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vunpckhpdz256rmkz_vunpckhpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vunpckhpsz128rmkz_vunpckhpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vunpckhpsz256rmkz_vunpckhpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vunpcklpdz128rmkz_vunpcklpdz128rrkz_test() #0 { ret void } + define void @stack_fold_vunpcklpdz256rmkz_vunpcklpdz256rrkz_test() #0 { ret void } + define void @stack_fold_vunpcklpsz128rmkz_vunpcklpsz128rrkz_test() #0 { ret void } + define void @stack_fold_vunpcklpsz256rmkz_vunpcklpsz256rrkz_test() #0 { ret void } + define void @stack_fold_vaddpdz128rmk_vaddpdz128rrk_test() #0 { ret void } + define void @stack_fold_vaddpdz256rmk_vaddpdz256rrk_test() #0 { ret void } + define void @stack_fold_vaddpsz128rmk_vaddpsz128rrk_test() #0 { ret void } + define void @stack_fold_vaddpsz256rmk_vaddpsz256rrk_test() #0 { ret void } + define void @stack_fold_valigndz128rmik_valigndz128rrik_test() #0 { ret void } + define void @stack_fold_valigndz256rmik_valigndz256rrik_test() #0 { ret void } + define void @stack_fold_valignqz128rmik_valignqz128rrik_test() #0 { ret void } + define void @stack_fold_valignqz256rmik_valignqz256rrik_test() #0 { ret void } + define void @stack_fold_vdivpdz128rmk_vdivpdz128rrk_test() #0 { ret void } + define void @stack_fold_vdivpdz256rmk_vdivpdz256rrk_test() #0 { ret void } + define void @stack_fold_vdivpsz128rmk_vdivpsz128rrk_test() #0 { ret void } + define void @stack_fold_vdivpsz256rmk_vdivpsz256rrk_test() #0 { ret void } + define void @stack_fold_vfixupimmpdz128rmik_vfixupimmpdz128rrik_test() #0 { ret void } + define void @stack_fold_vfixupimmpdz128rmikz_vfixupimmpdz128rrikz_test() #0 { ret void } + define void @stack_fold_vfixupimmpdz256rmik_vfixupimmpdz256rrik_test() #0 { ret void } + define void @stack_fold_vfixupimmpdz256rmikz_vfixupimmpdz256rrikz_test() #0 { ret void } + define void @stack_fold_vfixupimmpsz128rmik_vfixupimmpsz128rrik_test() #0 { ret void } + define void @stack_fold_vfixupimmpsz128rmikz_vfixupimmpsz128rrikz_test() #0 { ret void } + define void @stack_fold_vfixupimmpsz256rmik_vfixupimmpsz256rrik_test() #0 { ret void } + define void @stack_fold_vfixupimmpsz256rmikz_vfixupimmpsz256rrikz_test() #0 { ret void } + define void @stack_fold_vfmadd132pdz128mk_vfmadd132pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmadd132pdz128mkz_vfmadd132pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmadd132pdz256mk_vfmadd132pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmadd132pdz256mkz_vfmadd132pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmadd132psz128mk_vfmadd132psz128rk_test() #0 { ret void } + define void @stack_fold_vfmadd132psz128mkz_vfmadd132psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmadd132psz256mk_vfmadd132psz256rk_test() #0 { ret void } + define void @stack_fold_vfmadd132psz256mkz_vfmadd132psz256rkz_test() #0 { ret void } + define void @stack_fold_vfmadd213pdz128mk_vfmadd213pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmadd213pdz128mkz_vfmadd213pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmadd213pdz256mk_vfmadd213pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmadd213pdz256mkz_vfmadd213pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmadd213psz128mk_vfmadd213psz128rk_test() #0 { ret void } + define void @stack_fold_vfmadd213psz128mkz_vfmadd213psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmadd213psz256mk_vfmadd213psz256rk_test() #0 { ret void } + define void @stack_fold_vfmadd213psz256mkz_vfmadd213psz256rkz_test() #0 { ret void } + define void @stack_fold_vfmadd231pdz128mk_vfmadd231pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmadd231pdz128mkz_vfmadd231pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmadd231pdz256mk_vfmadd231pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmadd231pdz256mkz_vfmadd231pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmadd231psz128mk_vfmadd231psz128rk_test() #0 { ret void } + define void @stack_fold_vfmadd231psz128mkz_vfmadd231psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmadd231psz256mk_vfmadd231psz256rk_test() #0 { ret void } + define void @stack_fold_vfmadd231psz256mkz_vfmadd231psz256rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pdz128mk_vfmaddsub132pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pdz128mkz_vfmaddsub132pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pdz256mk_vfmaddsub132pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pdz256mkz_vfmaddsub132pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub132psz128mk_vfmaddsub132psz128rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub132psz128mkz_vfmaddsub132psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub132psz256mk_vfmaddsub132psz256rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub132psz256mkz_vfmaddsub132psz256rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pdz128mk_vfmaddsub213pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pdz128mkz_vfmaddsub213pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pdz256mk_vfmaddsub213pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pdz256mkz_vfmaddsub213pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub213psz128mk_vfmaddsub213psz128rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub213psz128mkz_vfmaddsub213psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub213psz256mk_vfmaddsub213psz256rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub213psz256mkz_vfmaddsub213psz256rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pdz128mk_vfmaddsub231pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pdz128mkz_vfmaddsub231pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pdz256mk_vfmaddsub231pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pdz256mkz_vfmaddsub231pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub231psz128mk_vfmaddsub231psz128rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub231psz128mkz_vfmaddsub231psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmaddsub231psz256mk_vfmaddsub231psz256rk_test() #0 { ret void } + define void @stack_fold_vfmaddsub231psz256mkz_vfmaddsub231psz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsub132pdz128mk_vfmsub132pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmsub132pdz128mkz_vfmsub132pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsub132pdz256mk_vfmsub132pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmsub132pdz256mkz_vfmsub132pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsub132psz128mk_vfmsub132psz128rk_test() #0 { ret void } + define void @stack_fold_vfmsub132psz128mkz_vfmsub132psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsub132psz256mk_vfmsub132psz256rk_test() #0 { ret void } + define void @stack_fold_vfmsub132psz256mkz_vfmsub132psz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsub213pdz128mk_vfmsub213pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmsub213pdz128mkz_vfmsub213pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsub213pdz256mk_vfmsub213pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmsub213pdz256mkz_vfmsub213pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsub213psz128mk_vfmsub213psz128rk_test() #0 { ret void } + define void @stack_fold_vfmsub213psz128mkz_vfmsub213psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsub213psz256mk_vfmsub213psz256rk_test() #0 { ret void } + define void @stack_fold_vfmsub213psz256mkz_vfmsub213psz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsub231pdz128mk_vfmsub231pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmsub231pdz128mkz_vfmsub231pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsub231pdz256mk_vfmsub231pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmsub231pdz256mkz_vfmsub231pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsub231psz128mk_vfmsub231psz128rk_test() #0 { ret void } + define void @stack_fold_vfmsub231psz128mkz_vfmsub231psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsub231psz256mk_vfmsub231psz256rk_test() #0 { ret void } + define void @stack_fold_vfmsub231psz256mkz_vfmsub231psz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pdz128mk_vfmsubadd132pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pdz128mkz_vfmsubadd132pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pdz256mk_vfmsubadd132pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pdz256mkz_vfmsubadd132pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd132psz128mk_vfmsubadd132psz128rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd132psz128mkz_vfmsubadd132psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd132psz256mk_vfmsubadd132psz256rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd132psz256mkz_vfmsubadd132psz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pdz128mk_vfmsubadd213pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pdz128mkz_vfmsubadd213pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pdz256mk_vfmsubadd213pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pdz256mkz_vfmsubadd213pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd213psz128mk_vfmsubadd213psz128rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd213psz128mkz_vfmsubadd213psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd213psz256mk_vfmsubadd213psz256rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd213psz256mkz_vfmsubadd213psz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pdz128mk_vfmsubadd231pdz128rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pdz128mkz_vfmsubadd231pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pdz256mk_vfmsubadd231pdz256rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pdz256mkz_vfmsubadd231pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd231psz128mk_vfmsubadd231psz128rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd231psz128mkz_vfmsubadd231psz128rkz_test() #0 { ret void } + define void @stack_fold_vfmsubadd231psz256mk_vfmsubadd231psz256rk_test() #0 { ret void } + define void @stack_fold_vfmsubadd231psz256mkz_vfmsubadd231psz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd132pdz128mk_vfnmadd132pdz128rk_test() #0 { ret void } + define void @stack_fold_vfnmadd132pdz128mkz_vfnmadd132pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd132pdz256mk_vfnmadd132pdz256rk_test() #0 { ret void } + define void @stack_fold_vfnmadd132pdz256mkz_vfnmadd132pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd132psz128mk_vfnmadd132psz128rk_test() #0 { ret void } + define void @stack_fold_vfnmadd132psz128mkz_vfnmadd132psz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd132psz256mk_vfnmadd132psz256rk_test() #0 { ret void } + define void @stack_fold_vfnmadd132psz256mkz_vfnmadd132psz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd213pdz128mk_vfnmadd213pdz128rk_test() #0 { ret void } + define void @stack_fold_vfnmadd213pdz128mkz_vfnmadd213pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd213pdz256mk_vfnmadd213pdz256rk_test() #0 { ret void } + define void @stack_fold_vfnmadd213pdz256mkz_vfnmadd213pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd213psz128mk_vfnmadd213psz128rk_test() #0 { ret void } + define void @stack_fold_vfnmadd213psz128mkz_vfnmadd213psz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd213psz256mk_vfnmadd213psz256rk_test() #0 { ret void } + define void @stack_fold_vfnmadd213psz256mkz_vfnmadd213psz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd231pdz128mk_vfnmadd231pdz128rk_test() #0 { ret void } + define void @stack_fold_vfnmadd231pdz128mkz_vfnmadd231pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd231pdz256mk_vfnmadd231pdz256rk_test() #0 { ret void } + define void @stack_fold_vfnmadd231pdz256mkz_vfnmadd231pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd231psz128mk_vfnmadd231psz128rk_test() #0 { ret void } + define void @stack_fold_vfnmadd231psz128mkz_vfnmadd231psz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmadd231psz256mk_vfnmadd231psz256rk_test() #0 { ret void } + define void @stack_fold_vfnmadd231psz256mkz_vfnmadd231psz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub132pdz128mk_vfnmsub132pdz128rk_test() #0 { ret void } + define void @stack_fold_vfnmsub132pdz128mkz_vfnmsub132pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub132pdz256mk_vfnmsub132pdz256rk_test() #0 { ret void } + define void @stack_fold_vfnmsub132pdz256mkz_vfnmsub132pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub132psz128mk_vfnmsub132psz128rk_test() #0 { ret void } + define void @stack_fold_vfnmsub132psz128mkz_vfnmsub132psz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub132psz256mk_vfnmsub132psz256rk_test() #0 { ret void } + define void @stack_fold_vfnmsub132psz256mkz_vfnmsub132psz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub213pdz128mk_vfnmsub213pdz128rk_test() #0 { ret void } + define void @stack_fold_vfnmsub213pdz128mkz_vfnmsub213pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub213pdz256mk_vfnmsub213pdz256rk_test() #0 { ret void } + define void @stack_fold_vfnmsub213pdz256mkz_vfnmsub213pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub213psz128mk_vfnmsub213psz128rk_test() #0 { ret void } + define void @stack_fold_vfnmsub213psz128mkz_vfnmsub213psz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub213psz256mk_vfnmsub213psz256rk_test() #0 { ret void } + define void @stack_fold_vfnmsub213psz256mkz_vfnmsub213psz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub231pdz128mk_vfnmsub231pdz128rk_test() #0 { ret void } + define void @stack_fold_vfnmsub231pdz128mkz_vfnmsub231pdz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub231pdz256mk_vfnmsub231pdz256rk_test() #0 { ret void } + define void @stack_fold_vfnmsub231pdz256mkz_vfnmsub231pdz256rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub231psz128mk_vfnmsub231psz128rk_test() #0 { ret void } + define void @stack_fold_vfnmsub231psz128mkz_vfnmsub231psz128rkz_test() #0 { ret void } + define void @stack_fold_vfnmsub231psz256mk_vfnmsub231psz256rk_test() #0 { ret void } + define void @stack_fold_vfnmsub231psz256mkz_vfnmsub231psz256rkz_test() #0 { ret void } + define void @stack_fold_vinsertf32x4z256rmk_vinsertf32x4z256rrk_test() #0 { ret void } + define void @stack_fold_vinserti32x4z256rmk_vinserti32x4z256rrk_test() #0 { ret void } + define void @stack_fold_vmaxcpdz128rmk_vmaxcpdz128rrk_test() #0 { ret void } + define void @stack_fold_vmaxcpdz256rmk_vmaxcpdz256rrk_test() #0 { ret void } + define void @stack_fold_vmaxcpsz128rmk_vmaxcpsz128rrk_test() #0 { ret void } + define void @stack_fold_vmaxcpsz256rmk_vmaxcpsz256rrk_test() #0 { ret void } + define void @stack_fold_vmaxpdz128rmk_vmaxpdz128rrk_test() #0 { ret void } + define void @stack_fold_vmaxpdz256rmk_vmaxpdz256rrk_test() #0 { ret void } + define void @stack_fold_vmaxpsz128rmk_vmaxpsz128rrk_test() #0 { ret void } + define void @stack_fold_vmaxpsz256rmk_vmaxpsz256rrk_test() #0 { ret void } + define void @stack_fold_vmincpdz128rmk_vmincpdz128rrk_test() #0 { ret void } + define void @stack_fold_vmincpdz256rmk_vmincpdz256rrk_test() #0 { ret void } + define void @stack_fold_vmincpsz128rmk_vmincpsz128rrk_test() #0 { ret void } + define void @stack_fold_vmincpsz256rmk_vmincpsz256rrk_test() #0 { ret void } + define void @stack_fold_vminpdz128rmk_vminpdz128rrk_test() #0 { ret void } + define void @stack_fold_vminpdz256rmk_vminpdz256rrk_test() #0 { ret void } + define void @stack_fold_vminpsz128rmk_vminpsz128rrk_test() #0 { ret void } + define void @stack_fold_vminpsz256rmk_vminpsz256rrk_test() #0 { ret void } + define void @stack_fold_vmulpdz128rmk_vmulpdz128rrk_test() #0 { ret void } + define void @stack_fold_vmulpdz256rmk_vmulpdz256rrk_test() #0 { ret void } + define void @stack_fold_vmulpsz128rmk_vmulpsz128rrk_test() #0 { ret void } + define void @stack_fold_vmulpsz256rmk_vmulpsz256rrk_test() #0 { ret void } + define void @stack_fold_vpadddz128rmk_vpadddz128rrk_test() #0 { ret void } + define void @stack_fold_vpadddz256rmk_vpadddz256rrk_test() #0 { ret void } + define void @stack_fold_vpaddqz128rmk_vpaddqz128rrk_test() #0 { ret void } + define void @stack_fold_vpaddqz256rmk_vpaddqz256rrk_test() #0 { ret void } + define void @stack_fold_vpanddz128rmk_vpanddz128rrk_test() #0 { ret void } + define void @stack_fold_vpanddz256rmk_vpanddz256rrk_test() #0 { ret void } + define void @stack_fold_vpandndz128rmk_vpandndz128rrk_test() #0 { ret void } + define void @stack_fold_vpandndz256rmk_vpandndz256rrk_test() #0 { ret void } + define void @stack_fold_vpandnqz128rmk_vpandnqz128rrk_test() #0 { ret void } + define void @stack_fold_vpandnqz256rmk_vpandnqz256rrk_test() #0 { ret void } + define void @stack_fold_vpandqz128rmk_vpandqz128rrk_test() #0 { ret void } + define void @stack_fold_vpandqz256rmk_vpandqz256rrk_test() #0 { ret void } + define void @stack_fold_vpermdz256rmk_vpermdz256rrk_test() #0 { ret void } + define void @stack_fold_vpermi2d128rmk_vpermi2d128rrk_test() #0 { ret void } + define void @stack_fold_vpermi2d128rmkz_vpermi2d128rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2d256rmk_vpermi2d256rrk_test() #0 { ret void } + define void @stack_fold_vpermi2d256rmkz_vpermi2d256rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2pd128rmk_vpermi2pd128rrk_test() #0 { ret void } + define void @stack_fold_vpermi2pd128rmkz_vpermi2pd128rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2pd256rmk_vpermi2pd256rrk_test() #0 { ret void } + define void @stack_fold_vpermi2pd256rmkz_vpermi2pd256rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2ps128rmk_vpermi2ps128rrk_test() #0 { ret void } + define void @stack_fold_vpermi2ps128rmkz_vpermi2ps128rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2ps256rmk_vpermi2ps256rrk_test() #0 { ret void } + define void @stack_fold_vpermi2ps256rmkz_vpermi2ps256rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2q128rmk_vpermi2q128rrk_test() #0 { ret void } + define void @stack_fold_vpermi2q128rmkz_vpermi2q128rrkz_test() #0 { ret void } + define void @stack_fold_vpermi2q256rmk_vpermi2q256rrk_test() #0 { ret void } + define void @stack_fold_vpermi2q256rmkz_vpermi2q256rrkz_test() #0 { ret void } + define void @stack_fold_vpermilpdz128rmk_vpermilpdz128rrk_test() #0 { ret void } + define void @stack_fold_vpermilpdz256rmk_vpermilpdz256rrk_test() #0 { ret void } + define void @stack_fold_vpermilpsz128rmk_vpermilpsz128rrk_test() #0 { ret void } + define void @stack_fold_vpermilpsz256rmk_vpermilpsz256rrk_test() #0 { ret void } + define void @stack_fold_vpermpdz256rmk_vpermpdz256rrk_test() #0 { ret void } + define void @stack_fold_vpermpsz256rmk_vpermpsz256rrk_test() #0 { ret void } + define void @stack_fold_vpermqz256rmk_vpermqz256rrk_test() #0 { ret void } + define void @stack_fold_vpermt2d128rmk_vpermt2d128rrk_test() #0 { ret void } + define void @stack_fold_vpermt2d128rmkz_vpermt2d128rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2d256rmk_vpermt2d256rrk_test() #0 { ret void } + define void @stack_fold_vpermt2d256rmkz_vpermt2d256rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2pd128rmk_vpermt2pd128rrk_test() #0 { ret void } + define void @stack_fold_vpermt2pd128rmkz_vpermt2pd128rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2pd256rmk_vpermt2pd256rrk_test() #0 { ret void } + define void @stack_fold_vpermt2pd256rmkz_vpermt2pd256rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2ps128rmk_vpermt2ps128rrk_test() #0 { ret void } + define void @stack_fold_vpermt2ps128rmkz_vpermt2ps128rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2ps256rmk_vpermt2ps256rrk_test() #0 { ret void } + define void @stack_fold_vpermt2ps256rmkz_vpermt2ps256rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2q128rmk_vpermt2q128rrk_test() #0 { ret void } + define void @stack_fold_vpermt2q128rmkz_vpermt2q128rrkz_test() #0 { ret void } + define void @stack_fold_vpermt2q256rmk_vpermt2q256rrk_test() #0 { ret void } + define void @stack_fold_vpermt2q256rmkz_vpermt2q256rrkz_test() #0 { ret void } + define void @stack_fold_vpmaxsdz128rmk_vpmaxsdz128rrk_test() #0 { ret void } + define void @stack_fold_vpmaxsdz256rmk_vpmaxsdz256rrk_test() #0 { ret void } + define void @stack_fold_vpmaxsqz128rmk_vpmaxsqz128rrk_test() #0 { ret void } + define void @stack_fold_vpmaxsqz256rmk_vpmaxsqz256rrk_test() #0 { ret void } + define void @stack_fold_vpmaxudz128rmk_vpmaxudz128rrk_test() #0 { ret void } + define void @stack_fold_vpmaxudz256rmk_vpmaxudz256rrk_test() #0 { ret void } + define void @stack_fold_vpmaxuqz128rmk_vpmaxuqz128rrk_test() #0 { ret void } + define void @stack_fold_vpmaxuqz256rmk_vpmaxuqz256rrk_test() #0 { ret void } + define void @stack_fold_vpminsdz128rmk_vpminsdz128rrk_test() #0 { ret void } + define void @stack_fold_vpminsdz256rmk_vpminsdz256rrk_test() #0 { ret void } + define void @stack_fold_vpminsqz128rmk_vpminsqz128rrk_test() #0 { ret void } + define void @stack_fold_vpminsqz256rmk_vpminsqz256rrk_test() #0 { ret void } + define void @stack_fold_vpminudz128rmk_vpminudz128rrk_test() #0 { ret void } + define void @stack_fold_vpminudz256rmk_vpminudz256rrk_test() #0 { ret void } + define void @stack_fold_vpminuqz128rmk_vpminuqz128rrk_test() #0 { ret void } + define void @stack_fold_vpminuqz256rmk_vpminuqz256rrk_test() #0 { ret void } + define void @stack_fold_vpmuldqz128rmk_vpmuldqz128rrk_test() #0 { ret void } + define void @stack_fold_vpmuldqz256rmk_vpmuldqz256rrk_test() #0 { ret void } + define void @stack_fold_vpmulldz128rmk_vpmulldz128rrk_test() #0 { ret void } + define void @stack_fold_vpmulldz256rmk_vpmulldz256rrk_test() #0 { ret void } + define void @stack_fold_vpmuludqz128rmk_vpmuludqz128rrk_test() #0 { ret void } + define void @stack_fold_vpmuludqz256rmk_vpmuludqz256rrk_test() #0 { ret void } + define void @stack_fold_vpordz128rmk_vpordz128rrk_test() #0 { ret void } + define void @stack_fold_vpordz256rmk_vpordz256rrk_test() #0 { ret void } + define void @stack_fold_vporqz128rmk_vporqz128rrk_test() #0 { ret void } + define void @stack_fold_vporqz256rmk_vporqz256rrk_test() #0 { ret void } + define void @stack_fold_vprolvdz128rmk_vprolvdz128rrk_test() #0 { ret void } + define void @stack_fold_vprolvdz256rmk_vprolvdz256rrk_test() #0 { ret void } + define void @stack_fold_vprolvqz128rmk_vprolvqz128rrk_test() #0 { ret void } + define void @stack_fold_vprolvqz256rmk_vprolvqz256rrk_test() #0 { ret void } + define void @stack_fold_vprorvdz128rmk_vprorvdz128rrk_test() #0 { ret void } + define void @stack_fold_vprorvdz256rmk_vprorvdz256rrk_test() #0 { ret void } + define void @stack_fold_vprorvqz128rmk_vprorvqz128rrk_test() #0 { ret void } + define void @stack_fold_vprorvqz256rmk_vprorvqz256rrk_test() #0 { ret void } + define void @stack_fold_vpslldz128rmk_vpslldz128rrk_test() #0 { ret void } + define void @stack_fold_vpslldz256rmk_vpslldz256rrk_test() #0 { ret void } + define void @stack_fold_vpsllqz128rmk_vpsllqz128rrk_test() #0 { ret void } + define void @stack_fold_vpsllqz256rmk_vpsllqz256rrk_test() #0 { ret void } + define void @stack_fold_vpsllvdz128rmk_vpsllvdz128rrk_test() #0 { ret void } + define void @stack_fold_vpsllvdz256rmk_vpsllvdz256rrk_test() #0 { ret void } + define void @stack_fold_vpsllvqz128rmk_vpsllvqz128rrk_test() #0 { ret void } + define void @stack_fold_vpsllvqz256rmk_vpsllvqz256rrk_test() #0 { ret void } + define void @stack_fold_vpsradz128rmk_vpsradz128rrk_test() #0 { ret void } + define void @stack_fold_vpsradz256rmk_vpsradz256rrk_test() #0 { ret void } + define void @stack_fold_vpsraqz128rmk_vpsraqz128rrk_test() #0 { ret void } + define void @stack_fold_vpsraqz256rmk_vpsraqz256rrk_test() #0 { ret void } + define void @stack_fold_vpsravdz128rmk_vpsravdz128rrk_test() #0 { ret void } + define void @stack_fold_vpsravdz256rmk_vpsravdz256rrk_test() #0 { ret void } + define void @stack_fold_vpsravqz128rmk_vpsravqz128rrk_test() #0 { ret void } + define void @stack_fold_vpsravqz256rmk_vpsravqz256rrk_test() #0 { ret void } + define void @stack_fold_vpsrldz128rmk_vpsrldz128rrk_test() #0 { ret void } + define void @stack_fold_vpsrldz256rmk_vpsrldz256rrk_test() #0 { ret void } + define void @stack_fold_vpsrlqz128rmk_vpsrlqz128rrk_test() #0 { ret void } + define void @stack_fold_vpsrlqz256rmk_vpsrlqz256rrk_test() #0 { ret void } + define void @stack_fold_vpsrlvdz128rmk_vpsrlvdz128rrk_test() #0 { ret void } + define void @stack_fold_vpsrlvdz256rmk_vpsrlvdz256rrk_test() #0 { ret void } + define void @stack_fold_vpsrlvqz128rmk_vpsrlvqz128rrk_test() #0 { ret void } + define void @stack_fold_vpsrlvqz256rmk_vpsrlvqz256rrk_test() #0 { ret void } + define void @stack_fold_vpsubdz128rmk_vpsubdz128rrk_test() #0 { ret void } + define void @stack_fold_vpsubdz256rmk_vpsubdz256rrk_test() #0 { ret void } + define void @stack_fold_vpsubqz128rmk_vpsubqz128rrk_test() #0 { ret void } + define void @stack_fold_vpsubqz256rmk_vpsubqz256rrk_test() #0 { ret void } + define void @stack_fold_vpternlogdz128rmik_vpternlogdz128rrik_test() #0 { ret void } + define void @stack_fold_vpternlogdz128rmikz_vpternlogdz128rrikz_test() #0 { ret void } + define void @stack_fold_vpternlogdz256rmik_vpternlogdz256rrik_test() #0 { ret void } + define void @stack_fold_vpternlogdz256rmikz_vpternlogdz256rrikz_test() #0 { ret void } + define void @stack_fold_vpternlogqz128rmik_vpternlogqz128rrik_test() #0 { ret void } + define void @stack_fold_vpternlogqz128rmikz_vpternlogqz128rrikz_test() #0 { ret void } + define void @stack_fold_vpternlogqz256rmik_vpternlogqz256rrik_test() #0 { ret void } + define void @stack_fold_vpternlogqz256rmikz_vpternlogqz256rrikz_test() #0 { ret void } + define void @stack_fold_vpunpckhdqz128rmk_vpunpckhdqz128rrk_test() #0 { ret void } + define void @stack_fold_vpunpckhdqz256rmk_vpunpckhdqz256rrk_test() #0 { ret void } + define void @stack_fold_vpunpckhqdqz128rmk_vpunpckhqdqz128rrk_test() #0 { ret void } + define void @stack_fold_vpunpckhqdqz256rmk_vpunpckhqdqz256rrk_test() #0 { ret void } + define void @stack_fold_vpunpckldqz128rmk_vpunpckldqz128rrk_test() #0 { ret void } + define void @stack_fold_vpunpckldqz256rmk_vpunpckldqz256rrk_test() #0 { ret void } + define void @stack_fold_vpunpcklqdqz128rmk_vpunpcklqdqz128rrk_test() #0 { ret void } + define void @stack_fold_vpunpcklqdqz256rmk_vpunpcklqdqz256rrk_test() #0 { ret void } + define void @stack_fold_vpxordz128rmk_vpxordz128rrk_test() #0 { ret void } + define void @stack_fold_vpxordz256rmk_vpxordz256rrk_test() #0 { ret void } + define void @stack_fold_vpxorqz128rmk_vpxorqz128rrk_test() #0 { ret void } + define void @stack_fold_vpxorqz256rmk_vpxorqz256rrk_test() #0 { ret void } + define void @stack_fold_vscalefpdz128rmk_vscalefpdz128rrk_test() #0 { ret void } + define void @stack_fold_vscalefpdz256rmk_vscalefpdz256rrk_test() #0 { ret void } + define void @stack_fold_vscalefpsz128rmk_vscalefpsz128rrk_test() #0 { ret void } + define void @stack_fold_vscalefpsz256rmk_vscalefpsz256rrk_test() #0 { ret void } + define void @stack_fold_vshuff32x4z256rmik_vshuff32x4z256rrik_test() #0 { ret void } + define void @stack_fold_vshuff64x2z256rmik_vshuff64x2z256rrik_test() #0 { ret void } + define void @stack_fold_vshufi32x4z256rmik_vshufi32x4z256rrik_test() #0 { ret void } + define void @stack_fold_vshufi64x2z256rmik_vshufi64x2z256rrik_test() #0 { ret void } + define void @stack_fold_vshufpdz128rmik_vshufpdz128rrik_test() #0 { ret void } + define void @stack_fold_vshufpdz256rmik_vshufpdz256rrik_test() #0 { ret void } + define void @stack_fold_vshufpsz128rmik_vshufpsz128rrik_test() #0 { ret void } + define void @stack_fold_vshufpsz256rmik_vshufpsz256rrik_test() #0 { ret void } + define void @stack_fold_vsubpdz128rmk_vsubpdz128rrk_test() #0 { ret void } + define void @stack_fold_vsubpdz256rmk_vsubpdz256rrk_test() #0 { ret void } + define void @stack_fold_vsubpsz128rmk_vsubpsz128rrk_test() #0 { ret void } + define void @stack_fold_vsubpsz256rmk_vsubpsz256rrk_test() #0 { ret void } + define void @stack_fold_vunpckhpdz128rmk_vunpckhpdz128rrk_test() #0 { ret void } + define void @stack_fold_vunpckhpdz256rmk_vunpckhpdz256rrk_test() #0 { ret void } + define void @stack_fold_vunpckhpsz128rmk_vunpckhpsz128rrk_test() #0 { ret void } + define void @stack_fold_vunpckhpsz256rmk_vunpckhpsz256rrk_test() #0 { ret void } + define void @stack_fold_vunpcklpdz128rmk_vunpcklpdz128rrk_test() #0 { ret void } + define void @stack_fold_vunpcklpdz256rmk_vunpcklpdz256rrk_test() #0 { ret void } + define void @stack_fold_vunpcklpsz128rmk_vunpcklpsz128rrk_test() #0 { ret void } + define void @stack_fold_vunpcklpsz256rmk_vunpcklpsz256rrk_test() #0 { ret void } +... +--- +name: stack_fold_vcompresspdz128mr_vcompresspdz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vcompresspdz128mr_vcompresspdz128rr_test + ; CHECK: VCOMPRESSPDZ128mr + %0 = VCOMPRESSPDZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vcompresspdz256mr_vcompresspdz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vcompresspdz256mr_vcompresspdz256rr_test + ; CHECK: VCOMPRESSPDZ256mr + %0 = VCOMPRESSPDZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vcompresspsz128mr_vcompresspsz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vcompresspsz128mr_vcompresspsz128rr_test + ; CHECK: VCOMPRESSPSZ128mr + %0 = VCOMPRESSPSZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vcompresspsz256mr_vcompresspsz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vcompresspsz256mr_vcompresspsz256rr_test + ; CHECK: VCOMPRESSPSZ256mr + %0 = VCOMPRESSPSZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vcvtps2phz128mr_vcvtps2phz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vcvtps2phz128mr_vcvtps2phz128rr_test + ; CHECK: VCVTPS2PHZ128mr + %0 = VCVTPS2PHZ128rr undef %xmm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vcvtps2phz256mr_vcvtps2phz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vcvtps2phz256mr_vcvtps2phz256rr_test + ; CHECK: VCVTPS2PHZ256mr + %0 = VCVTPS2PHZ256rr undef %ymm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextractf32x4z256mr_vextractf32x4z256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextractf32x4z256mr_vextractf32x4z256rr_test + ; CHECK: VEXTRACTF32x4Z256mr + %0 = VEXTRACTF32x4Z256rr undef %ymm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vextracti32x4z256mr_vextracti32x4z256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vextracti32x4z256mr_vextracti32x4z256rr_test + ; CHECK: VEXTRACTI32x4Z256mr + %0 = VEXTRACTI32x4Z256rr undef %ymm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovapdz128mr_vmovapdz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovapdz128mr_vmovapdz128rr_test + ; CHECK: VMOVAPDZ128mr + %0 = VMOVAPDZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovapdz256mr_vmovapdz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovapdz256mr_vmovapdz256rr_test + ; CHECK: VMOVAPDZ256mr + %0 = VMOVAPDZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovapsz128mr_vmovapsz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovapsz128mr_vmovapsz128rr_test + ; CHECK: VMOVAPSZ128mr + %0 = VMOVAPSZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovapsz256mr_vmovapsz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovapsz256mr_vmovapsz256rr_test + ; CHECK: VMOVAPSZ256mr + %0 = VMOVAPSZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqa32z128mr_vmovdqa32z128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqa32z128mr_vmovdqa32z128rr_test + ; CHECK: VMOVDQA32Z128mr + %0 = VMOVDQA32Z128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqa32z256mr_vmovdqa32z256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqa32z256mr_vmovdqa32z256rr_test + ; CHECK: VMOVDQA32Z256mr + %0 = VMOVDQA32Z256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqa64z128mr_vmovdqa64z128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqa64z128mr_vmovdqa64z128rr_test + ; CHECK: VMOVDQA64Z128mr + %0 = VMOVDQA64Z128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqa64z256mr_vmovdqa64z256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqa64z256mr_vmovdqa64z256rr_test + ; CHECK: VMOVDQA64Z256mr + %0 = VMOVDQA64Z256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu32z128mr_vmovdqu32z128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu32z128mr_vmovdqu32z128rr_test + ; CHECK: VMOVDQU32Z128mr + %0 = VMOVDQU32Z128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu32z256mr_vmovdqu32z256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu32z256mr_vmovdqu32z256rr_test + ; CHECK: VMOVDQU32Z256mr + %0 = VMOVDQU32Z256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu64z128mr_vmovdqu64z128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu64z128mr_vmovdqu64z128rr_test + ; CHECK: VMOVDQU64Z128mr + %0 = VMOVDQU64Z128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovdqu64z256mr_vmovdqu64z256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovdqu64z256mr_vmovdqu64z256rr_test + ; CHECK: VMOVDQU64Z256mr + %0 = VMOVDQU64Z256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovupdz128mr_vmovupdz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovupdz128mr_vmovupdz128rr_test + ; CHECK: VMOVUPDZ128mr + %0 = VMOVUPDZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovupdz256mr_vmovupdz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovupdz256mr_vmovupdz256rr_test + ; CHECK: VMOVUPDZ256mr + %0 = VMOVUPDZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovupsz128mr_vmovupsz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovupsz128mr_vmovupsz128rr_test + ; CHECK: VMOVUPSZ128mr + %0 = VMOVUPSZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmovupsz256mr_vmovupsz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmovupsz256mr_vmovupsz256rr_test + ; CHECK: VMOVUPSZ256mr + %0 = VMOVUPSZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpcompressdz128mr_vpcompressdz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpcompressdz128mr_vpcompressdz128rr_test + ; CHECK: VPCOMPRESSDZ128mr + %0 = VPCOMPRESSDZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpcompressdz256mr_vpcompressdz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpcompressdz256mr_vpcompressdz256rr_test + ; CHECK: VPCOMPRESSDZ256mr + %0 = VPCOMPRESSDZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpcompressqz128mr_vpcompressqz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpcompressqz128mr_vpcompressqz128rr_test + ; CHECK: VPCOMPRESSQZ128mr + %0 = VPCOMPRESSQZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpcompressqz256mr_vpcompressqz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr256x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 32, alignment: 32 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpcompressqz256mr_vpcompressqz256rr_test + ; CHECK: VPCOMPRESSQZ256mr + %0 = VPCOMPRESSQZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ256mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovdbz128mr_vpmovdbz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovdbz128mr_vpmovdbz128rr_test + ; CHECK: VPMOVDBZ128mr + %0 = VPMOVDBZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovdbz256mr_vpmovdbz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovdbz256mr_vpmovdbz256rr_test + ; CHECK: VPMOVDBZ256mr + %0 = VPMOVDBZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovdwz128mr_vpmovdwz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovdwz128mr_vpmovdwz128rr_test + ; CHECK: VPMOVDWZ128mr + %0 = VPMOVDWZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovdwz256mr_vpmovdwz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovdwz256mr_vpmovdwz256rr_test + ; CHECK: VPMOVDWZ256mr + %0 = VPMOVDWZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovqbz128mr_vpmovqbz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovqbz128mr_vpmovqbz128rr_test + ; CHECK: VPMOVQBZ128mr + %0 = VPMOVQBZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovqbz256mr_vpmovqbz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovqbz256mr_vpmovqbz256rr_test + ; CHECK: VPMOVQBZ256mr + %0 = VPMOVQBZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovqdz128mr_vpmovqdz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovqdz128mr_vpmovqdz128rr_test + ; CHECK: VPMOVQDZ128mr + %0 = VPMOVQDZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovqdz256mr_vpmovqdz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovqdz256mr_vpmovqdz256rr_test + ; CHECK: VPMOVQDZ256mr + %0 = VPMOVQDZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovqwz128mr_vpmovqwz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovqwz128mr_vpmovqwz128rr_test + ; CHECK: VPMOVQWZ128mr + %0 = VPMOVQWZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovqwz256mr_vpmovqwz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovqwz256mr_vpmovqwz256rr_test + ; CHECK: VPMOVQWZ256mr + %0 = VPMOVQWZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsdbz128mr_vpmovsdbz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsdbz128mr_vpmovsdbz128rr_test + ; CHECK: VPMOVSDBZ128mr + %0 = VPMOVSDBZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsdbz256mr_vpmovsdbz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsdbz256mr_vpmovsdbz256rr_test + ; CHECK: VPMOVSDBZ256mr + %0 = VPMOVSDBZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsdwz128mr_vpmovsdwz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsdwz128mr_vpmovsdwz128rr_test + ; CHECK: VPMOVSDWZ128mr + %0 = VPMOVSDWZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsdwz256mr_vpmovsdwz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsdwz256mr_vpmovsdwz256rr_test + ; CHECK: VPMOVSDWZ256mr + %0 = VPMOVSDWZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsqbz128mr_vpmovsqbz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsqbz128mr_vpmovsqbz128rr_test + ; CHECK: VPMOVSQBZ128mr + %0 = VPMOVSQBZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsqbz256mr_vpmovsqbz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsqbz256mr_vpmovsqbz256rr_test + ; CHECK: VPMOVSQBZ256mr + %0 = VPMOVSQBZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsqdz128mr_vpmovsqdz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsqdz128mr_vpmovsqdz128rr_test + ; CHECK: VPMOVSQDZ128mr + %0 = VPMOVSQDZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsqdz256mr_vpmovsqdz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsqdz256mr_vpmovsqdz256rr_test + ; CHECK: VPMOVSQDZ256mr + %0 = VPMOVSQDZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsqwz128mr_vpmovsqwz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsqwz128mr_vpmovsqwz128rr_test + ; CHECK: VPMOVSQWZ128mr + %0 = VPMOVSQWZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovsqwz256mr_vpmovsqwz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovsqwz256mr_vpmovsqwz256rr_test + ; CHECK: VPMOVSQWZ256mr + %0 = VPMOVSQWZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusdbz128mr_vpmovusdbz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusdbz128mr_vpmovusdbz128rr_test + ; CHECK: VPMOVUSDBZ128mr + %0 = VPMOVUSDBZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusdbz256mr_vpmovusdbz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusdbz256mr_vpmovusdbz256rr_test + ; CHECK: VPMOVUSDBZ256mr + %0 = VPMOVUSDBZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusdwz128mr_vpmovusdwz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusdwz128mr_vpmovusdwz128rr_test + ; CHECK: VPMOVUSDWZ128mr + %0 = VPMOVUSDWZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusdwz256mr_vpmovusdwz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusdwz256mr_vpmovusdwz256rr_test + ; CHECK: VPMOVUSDWZ256mr + %0 = VPMOVUSDWZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusqbz128mr_vpmovusqbz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusqbz128mr_vpmovusqbz128rr_test + ; CHECK: VPMOVUSQBZ128mr + %0 = VPMOVUSQBZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusqbz256mr_vpmovusqbz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusqbz256mr_vpmovusqbz256rr_test + ; CHECK: VPMOVUSQBZ256mr + %0 = VPMOVUSQBZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusqdz128mr_vpmovusqdz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusqdz128mr_vpmovusqdz128rr_test + ; CHECK: VPMOVUSQDZ128mr + %0 = VPMOVUSQDZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusqdz256mr_vpmovusqdz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusqdz256mr_vpmovusqdz256rr_test + ; CHECK: VPMOVUSQDZ256mr + %0 = VPMOVUSQDZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusqwz128mr_vpmovusqwz128rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusqwz128mr_vpmovusqwz128rr_test + ; CHECK: VPMOVUSQWZ128mr + %0 = VPMOVUSQWZ128rr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vpmovusqwz256mr_vpmovusqwz256rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128x } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vpmovusqwz256mr_vpmovusqwz256rr_test + ; CHECK: VPMOVUSQWZ256mr + %0 = VPMOVUSQWZ256rr undef %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + VMOVAPSZ128mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vbroadcastsdz256m_vbroadcastsdz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastsdz256m_vbroadcastsdz256r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSDZ256m + %ymm0 = VBROADCASTSDZ256r %1 + RET 0 +... +--- +name: stack_fold_vbroadcastssz128m_vbroadcastssz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastssz128m_vbroadcastssz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSSZ128m + %xmm0 = VBROADCASTSSZ128r %1 + RET 0 +... +--- +name: stack_fold_vbroadcastssz256m_vbroadcastssz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastssz256m_vbroadcastssz256r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSSZ256m + %ymm0 = VBROADCASTSSZ256r %1 + RET 0 +... +--- +name: stack_fold_vcvtdq2pdz128rm_vcvtdq2pdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pdz128rm_vcvtdq2pdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PDZ128rm + %xmm0 = VCVTDQ2PDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtdq2pdz256rm_vcvtdq2pdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pdz256rm_vcvtdq2pdz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PDZ256rm + %ymm0 = VCVTDQ2PDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtdq2psz128rm_vcvtdq2psz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2psz128rm_vcvtdq2psz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PSZ128rm + %xmm0 = VCVTDQ2PSZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtdq2psz256rm_vcvtdq2psz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2psz256rm_vcvtdq2psz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PSZ256rm + %ymm0 = VCVTDQ2PSZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2dqz128rm_vcvtpd2dqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2dqz128rm_vcvtpd2dqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2DQZ128rm + %xmm0 = VCVTPD2DQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2dqz256rm_vcvtpd2dqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2dqz256rm_vcvtpd2dqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2DQZ256rm + %xmm0 = VCVTPD2DQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2psz128rm_vcvtpd2psz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2psz128rm_vcvtpd2psz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2PSZ128rm + %xmm0 = VCVTPD2PSZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2psz256rm_vcvtpd2psz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2psz256rm_vcvtpd2psz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2PSZ256rm + %xmm0 = VCVTPD2PSZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2udqz128rm_vcvtpd2udqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2udqz128rm_vcvtpd2udqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UDQZ128rm + %xmm0 = VCVTPD2UDQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtpd2udqz256rm_vcvtpd2udqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2udqz256rm_vcvtpd2udqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UDQZ256rm + %xmm0 = VCVTPD2UDQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtph2psz128rm_vcvtph2psz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtph2psz128rm_vcvtph2psz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPH2PSZ128rm + %xmm0 = VCVTPH2PSZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtph2psz256rm_vcvtph2psz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtph2psz256rm_vcvtph2psz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPH2PSZ256rm + %ymm0 = VCVTPH2PSZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2dqz128rm_vcvtps2dqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2dqz128rm_vcvtps2dqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2DQZ128rm + %xmm0 = VCVTPS2DQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2dqz256rm_vcvtps2dqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2dqz256rm_vcvtps2dqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2DQZ256rm + %ymm0 = VCVTPS2DQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2pdz128rm_vcvtps2pdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdz128rm_vcvtps2pdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZ128rm + %xmm0 = VCVTPS2PDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2pdz256rm_vcvtps2pdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdz256rm_vcvtps2pdz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZ256rm + %ymm0 = VCVTPS2PDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2udqz128rm_vcvtps2udqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2udqz128rm_vcvtps2udqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UDQZ128rm + %xmm0 = VCVTPS2UDQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtps2udqz256rm_vcvtps2udqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2udqz256rm_vcvtps2udqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UDQZ256rm + %ymm0 = VCVTPS2UDQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqz128rm_vcvttpd2dqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqz128rm_vcvttpd2dqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZ128rm + %xmm0 = VCVTTPD2DQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqz256rm_vcvttpd2dqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqz256rm_vcvttpd2dqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZ256rm + %xmm0 = VCVTTPD2DQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqz128rm_vcvttpd2udqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqz128rm_vcvttpd2udqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZ128rm + %xmm0 = VCVTTPD2UDQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqz256rm_vcvttpd2udqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqz256rm_vcvttpd2udqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZ256rm + %xmm0 = VCVTTPD2UDQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2dqz128rm_vcvttps2dqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqz128rm_vcvttps2dqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZ128rm + %xmm0 = VCVTTPS2DQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2dqz256rm_vcvttps2dqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqz256rm_vcvttps2dqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZ256rm + %ymm0 = VCVTTPS2DQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2udqz128rm_vcvttps2udqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqz128rm_vcvttps2udqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZ128rm + %xmm0 = VCVTTPS2UDQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvttps2udqz256rm_vcvttps2udqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqz256rm_vcvttps2udqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZ256rm + %ymm0 = VCVTTPS2UDQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtudq2pdz128rm_vcvtudq2pdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pdz128rm_vcvtudq2pdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PDZ128rm + %xmm0 = VCVTUDQ2PDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtudq2pdz256rm_vcvtudq2pdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pdz256rm_vcvtudq2pdz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PDZ256rm + %ymm0 = VCVTUDQ2PDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vcvtudq2psz128rm_vcvtudq2psz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2psz128rm_vcvtudq2psz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PSZ128rm + %xmm0 = VCVTUDQ2PSZ128rr %1 + RET 0 +... +--- +name: stack_fold_vcvtudq2psz256rm_vcvtudq2psz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2psz256rm_vcvtudq2psz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PSZ256rm + %ymm0 = VCVTUDQ2PSZ256rr %1 + RET 0 +... +--- +name: stack_fold_vexpandpdz128rm_vexpandpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpdz128rm_vexpandpdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPDZ128rm + %xmm0 = VEXPANDPDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vexpandpdz256rm_vexpandpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpdz256rm_vexpandpdz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPDZ256rm + %ymm0 = VEXPANDPDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vexpandpsz128rm_vexpandpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpsz128rm_vexpandpsz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPSZ128rm + %xmm0 = VEXPANDPSZ128rr %1 + RET 0 +... +--- +name: stack_fold_vexpandpsz256rm_vexpandpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpsz256rm_vexpandpsz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPSZ256rm + %ymm0 = VEXPANDPSZ256rr %1 + RET 0 +... +--- +name: stack_fold_vgetexppdz128m_vgetexppdz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppdz128m_vgetexppdz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDZ128m + %xmm0 = VGETEXPPDZ128r %1 + RET 0 +... +--- +name: stack_fold_vgetexppdz256m_vgetexppdz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppdz256m_vgetexppdz256r_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDZ256m + %ymm0 = VGETEXPPDZ256r %1 + RET 0 +... +--- +name: stack_fold_vgetexppsz128m_vgetexppsz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppsz128m_vgetexppsz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSZ128m + %xmm0 = VGETEXPPSZ128r %1 + RET 0 +... +--- +name: stack_fold_vgetexppsz256m_vgetexppsz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppsz256m_vgetexppsz256r_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSZ256m + %ymm0 = VGETEXPPSZ256r %1 + RET 0 +... +--- +name: stack_fold_vgetmantpdz128rmi_vgetmantpdz128rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdz128rmi_vgetmantpdz128rri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZ128rmi + %xmm0 = VGETMANTPDZ128rri %1, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpdz256rmi_vgetmantpdz256rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdz256rmi_vgetmantpdz256rri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZ256rmi + %ymm0 = VGETMANTPDZ256rri %1, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpsz128rmi_vgetmantpsz128rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpsz128rmi_vgetmantpsz128rri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZ128rmi + %xmm0 = VGETMANTPSZ128rri %1, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpsz256rmi_vgetmantpsz256rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpsz256rmi_vgetmantpsz256rri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZ256rmi + %ymm0 = VGETMANTPSZ256rri %1, 0 + RET 0 +... +--- +name: stack_fold_vmovapdz128rm_vmovapdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovapdz128rm_vmovapdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPDZ128rm + %xmm0 = VMOVAPDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vmovapdz256rm_vmovapdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovapdz256rm_vmovapdz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPDZ256rm + %ymm0 = VMOVAPDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vmovapsz128rm_vmovapsz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovapsz128rm_vmovapsz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPSZ128rm + %xmm0 = VMOVAPSZ128rr %1 + RET 0 +... +--- +name: stack_fold_vmovapsz256rm_vmovapsz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovapsz256rm_vmovapsz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPSZ256rm + %ymm0 = VMOVAPSZ256rr %1 + RET 0 +... +--- +name: stack_fold_vmovddupz128rm_vmovddupz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovddupz128rm_vmovddupz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDDUPZ128rm + %xmm0 = VMOVDDUPZ128rr %1 + RET 0 +... +--- +name: stack_fold_vmovddupz256rm_vmovddupz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovddupz256rm_vmovddupz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDDUPZ256rm + %ymm0 = VMOVDDUPZ256rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqa32z128rm_vmovdqa32z128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa32z128rm_vmovdqa32z128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA32Z128rm + %xmm0 = VMOVDQA32Z128rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqa32z256rm_vmovdqa32z256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa32z256rm_vmovdqa32z256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA32Z256rm + %ymm0 = VMOVDQA32Z256rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqa64z128rm_vmovdqa64z128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa64z128rm_vmovdqa64z128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA64Z128rm + %xmm0 = VMOVDQA64Z128rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqa64z256rm_vmovdqa64z256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa64z256rm_vmovdqa64z256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA64Z256rm + %ymm0 = VMOVDQA64Z256rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqu32z128rm_vmovdqu32z128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu32z128rm_vmovdqu32z128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU32Z128rm + %xmm0 = VMOVDQU32Z128rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqu32z256rm_vmovdqu32z256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu32z256rm_vmovdqu32z256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU32Z256rm + %ymm0 = VMOVDQU32Z256rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqu64z128rm_vmovdqu64z128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu64z128rm_vmovdqu64z128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU64Z128rm + %xmm0 = VMOVDQU64Z128rr %1 + RET 0 +... +--- +name: stack_fold_vmovdqu64z256rm_vmovdqu64z256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu64z256rm_vmovdqu64z256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU64Z256rm + %ymm0 = VMOVDQU64Z256rr %1 + RET 0 +... +--- +name: stack_fold_vmovshdupz128rm_vmovshdupz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovshdupz128rm_vmovshdupz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSHDUPZ128rm + %xmm0 = VMOVSHDUPZ128rr %1 + RET 0 +... +--- +name: stack_fold_vmovshdupz256rm_vmovshdupz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovshdupz256rm_vmovshdupz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSHDUPZ256rm + %ymm0 = VMOVSHDUPZ256rr %1 + RET 0 +... +--- +name: stack_fold_vmovsldupz128rm_vmovsldupz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovsldupz128rm_vmovsldupz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSLDUPZ128rm + %xmm0 = VMOVSLDUPZ128rr %1 + RET 0 +... +--- +name: stack_fold_vmovsldupz256rm_vmovsldupz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovsldupz256rm_vmovsldupz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSLDUPZ256rm + %ymm0 = VMOVSLDUPZ256rr %1 + RET 0 +... +--- +name: stack_fold_vmovupdz128rm_vmovupdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovupdz128rm_vmovupdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPDZ128rm + %xmm0 = VMOVUPDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vmovupdz256rm_vmovupdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovupdz256rm_vmovupdz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPDZ256rm + %ymm0 = VMOVUPDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vmovupsz128rm_vmovupsz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovupsz128rm_vmovupsz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPSZ128rm + %xmm0 = VMOVUPSZ128rr %1 + RET 0 +... +--- +name: stack_fold_vmovupsz256rm_vmovupsz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovupsz256rm_vmovupsz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPSZ256rm + %ymm0 = VMOVUPSZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpabsdz128rm_vpabsdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsdz128rm_vpabsdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSDZ128rm + %xmm0 = VPABSDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpabsdz256rm_vpabsdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpabsdz256rm_vpabsdz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSDZ256rm + %ymm0 = VPABSDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpabsqz128rm_vpabsqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsqz128rm_vpabsqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSQZ128rm + %xmm0 = VPABSQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpabsqz256rm_vpabsqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpabsqz256rm_vpabsqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSQZ256rm + %ymm0 = VPABSQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastdz128m_vpbroadcastdz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastdz128m_vpbroadcastdz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTDZ128m + %xmm0 = VPBROADCASTDZ128r %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastdz256m_vpbroadcastdz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastdz256m_vpbroadcastdz256r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTDZ256m + %ymm0 = VPBROADCASTDZ256r %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastqz128m_vpbroadcastqz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastqz128m_vpbroadcastqz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTQZ128m + %xmm0 = VPBROADCASTQZ128r %1 + RET 0 +... +--- +name: stack_fold_vpbroadcastqz256m_vpbroadcastqz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastqz256m_vpbroadcastqz256r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTQZ256m + %ymm0 = VPBROADCASTQZ256r %1 + RET 0 +... +--- +name: stack_fold_vpermilpdz128mi_vpermilpdz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz128mi_vpermilpdz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ128mi + %xmm0 = VPERMILPDZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermilpdz256mi_vpermilpdz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz256mi_vpermilpdz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ256mi + %ymm0 = VPERMILPDZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermilpsz128mi_vpermilpsz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz128mi_vpermilpsz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ128mi + %xmm0 = VPERMILPSZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermilpsz256mi_vpermilpsz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz256mi_vpermilpsz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ256mi + %ymm0 = VPERMILPSZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermpdz256mi_vpermpdz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermpdz256mi_vpermpdz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZ256mi + %ymm0 = VPERMPDZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpermqz256mi_vpermqz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermqz256mi_vpermqz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZ256mi + %ymm0 = VPERMQZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpexpanddz128rm_vpexpanddz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpexpanddz128rm_vpexpanddz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDDZ128rm + %xmm0 = VPEXPANDDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpexpanddz256rm_vpexpanddz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpexpanddz256rm_vpexpanddz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDDZ256rm + %ymm0 = VPEXPANDDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpexpandqz128rm_vpexpandqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpexpandqz128rm_vpexpandqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDQZ128rm + %xmm0 = VPEXPANDQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpexpandqz256rm_vpexpandqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpexpandqz256rm_vpexpandqz256rr_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDQZ256rm + %ymm0 = VPEXPANDQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbdz128rm_vpmovsxbdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbdz128rm_vpmovsxbdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBDZ128rm + %xmm0 = VPMOVSXBDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbdz256rm_vpmovsxbdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbdz256rm_vpmovsxbdz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBDZ256rm + %ymm0 = VPMOVSXBDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbqz128rm_vpmovsxbqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbqz128rm_vpmovsxbqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBQZ128rm + %xmm0 = VPMOVSXBQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxbqz256rm_vpmovsxbqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbqz256rm_vpmovsxbqz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBQZ256rm + %ymm0 = VPMOVSXBQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxdqz128rm_vpmovsxdqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxdqz128rm_vpmovsxdqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXDQZ128rm + %xmm0 = VPMOVSXDQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxdqz256rm_vpmovsxdqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxdqz256rm_vpmovsxdqz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXDQZ256rm + %ymm0 = VPMOVSXDQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxwdz128rm_vpmovsxwdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwdz128rm_vpmovsxwdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWDZ128rm + %xmm0 = VPMOVSXWDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxwdz256rm_vpmovsxwdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwdz256rm_vpmovsxwdz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWDZ256rm + %ymm0 = VPMOVSXWDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxwqz128rm_vpmovsxwqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwqz128rm_vpmovsxwqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWQZ128rm + %xmm0 = VPMOVSXWQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovsxwqz256rm_vpmovsxwqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwqz256rm_vpmovsxwqz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWQZ256rm + %ymm0 = VPMOVSXWQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbdz128rm_vpmovzxbdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbdz128rm_vpmovzxbdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBDZ128rm + %xmm0 = VPMOVZXBDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbdz256rm_vpmovzxbdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbdz256rm_vpmovzxbdz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBDZ256rm + %ymm0 = VPMOVZXBDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbqz128rm_vpmovzxbqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbqz128rm_vpmovzxbqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBQZ128rm + %xmm0 = VPMOVZXBQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxbqz256rm_vpmovzxbqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbqz256rm_vpmovzxbqz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBQZ256rm + %ymm0 = VPMOVZXBQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxdqz128rm_vpmovzxdqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxdqz128rm_vpmovzxdqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXDQZ128rm + %xmm0 = VPMOVZXDQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxdqz256rm_vpmovzxdqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxdqz256rm_vpmovzxdqz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXDQZ256rm + %ymm0 = VPMOVZXDQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxwdz128rm_vpmovzxwdz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwdz128rm_vpmovzxwdz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWDZ128rm + %xmm0 = VPMOVZXWDZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxwdz256rm_vpmovzxwdz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwdz256rm_vpmovzxwdz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWDZ256rm + %ymm0 = VPMOVZXWDZ256rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxwqz128rm_vpmovzxwqz128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwqz128rm_vpmovzxwqz128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWQZ128rm + %xmm0 = VPMOVZXWQZ128rr %1 + RET 0 +... +--- +name: stack_fold_vpmovzxwqz256rm_vpmovzxwqz256rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwqz256rm_vpmovzxwqz256rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWQZ256rm + %ymm0 = VPMOVZXWQZ256rr %1 + RET 0 +... +--- +name: stack_fold_vproldz128mi_vproldz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vproldz128mi_vproldz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLDZ128mi + %xmm0 = VPROLDZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vproldz256mi_vproldz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vproldz256mi_vproldz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLDZ256mi + %ymm0 = VPROLDZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vprolqz128mi_vprolqz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprolqz128mi_vprolqz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLQZ128mi + %xmm0 = VPROLQZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vprolqz256mi_vprolqz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vprolqz256mi_vprolqz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLQZ256mi + %ymm0 = VPROLQZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vprordz128mi_vprordz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprordz128mi_vprordz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORDZ128mi + %xmm0 = VPRORDZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vprordz256mi_vprordz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vprordz256mi_vprordz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORDZ256mi + %ymm0 = VPRORDZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vprorqz128mi_vprorqz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprorqz128mi_vprorqz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORQZ128mi + %xmm0 = VPRORQZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vprorqz256mi_vprorqz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vprorqz256mi_vprorqz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORQZ256mi + %ymm0 = VPRORQZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshufdz128mi_vpshufdz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshufdz128mi_vpshufdz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFDZ128mi + %xmm0 = VPSHUFDZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpshufdz256mi_vpshufdz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpshufdz256mi_vpshufdz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFDZ256mi + %ymm0 = VPSHUFDZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpslldz128mi_vpslldz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpslldz128mi_vpslldz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ128mi + %xmm0 = VPSLLDZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpslldz256mi_vpslldz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpslldz256mi_vpslldz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ256mi + %ymm0 = VPSLLDZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsllqz128mi_vpsllqz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsllqz128mi_vpsllqz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ128mi + %xmm0 = VPSLLQZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsllqz256mi_vpsllqz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsllqz256mi_vpsllqz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ256mi + %ymm0 = VPSLLQZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsradz128mi_vpsradz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsradz128mi_vpsradz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ128mi + %xmm0 = VPSRADZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsradz256mi_vpsradz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsradz256mi_vpsradz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ256mi + %ymm0 = VPSRADZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsraqz128mi_vpsraqz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsraqz128mi_vpsraqz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ128mi + %xmm0 = VPSRAQZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsraqz256mi_vpsraqz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsraqz256mi_vpsraqz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ256mi + %ymm0 = VPSRAQZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrldz128mi_vpsrldz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrldz128mi_vpsrldz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ128mi + %xmm0 = VPSRLDZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrldz256mi_vpsrldz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsrldz256mi_vpsrldz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ256mi + %ymm0 = VPSRLDZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrlqz128mi_vpsrlqz128ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz128mi_vpsrlqz128ri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ128mi + %xmm0 = VPSRLQZ128ri %1, 0 + RET 0 +... +--- +name: stack_fold_vpsrlqz256mi_vpsrlqz256ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz256mi_vpsrlqz256ri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ256mi + %ymm0 = VPSRLQZ256ri %1, 0 + RET 0 +... +--- +name: stack_fold_vrcp14pdz128m_vrcp14pdz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14pdz128m_vrcp14pdz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PDZ128m + %xmm0 = VRCP14PDZ128r %1 + RET 0 +... +--- +name: stack_fold_vrcp14pdz256m_vrcp14pdz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14pdz256m_vrcp14pdz256r_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PDZ256m + %ymm0 = VRCP14PDZ256r %1 + RET 0 +... +--- +name: stack_fold_vrcp14psz128m_vrcp14psz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14psz128m_vrcp14psz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PSZ128m + %xmm0 = VRCP14PSZ128r %1 + RET 0 +... +--- +name: stack_fold_vrcp14psz256m_vrcp14psz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14psz256m_vrcp14psz256r_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PSZ256m + %ymm0 = VRCP14PSZ256r %1 + RET 0 +... +--- +name: stack_fold_vrndscalepdz128rmi_vrndscalepdz128rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdz128rmi_vrndscalepdz128rri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZ128rmi + %xmm0 = VRNDSCALEPDZ128rri %1, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepdz256rmi_vrndscalepdz256rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdz256rmi_vrndscalepdz256rri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZ256rmi + %ymm0 = VRNDSCALEPDZ256rri %1, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepsz128rmi_vrndscalepsz128rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepsz128rmi_vrndscalepsz128rri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZ128rmi + %xmm0 = VRNDSCALEPSZ128rri %1, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepsz256rmi_vrndscalepsz256rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepsz256rmi_vrndscalepsz256rri_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZ256rmi + %ymm0 = VRNDSCALEPSZ256rri %1, 0 + RET 0 +... +--- +name: stack_fold_vrsqrt14pdz128m_vrsqrt14pdz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pdz128m_vrsqrt14pdz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PDZ128m + %xmm0 = VRSQRT14PDZ128r %1 + RET 0 +... +--- +name: stack_fold_vrsqrt14pdz256m_vrsqrt14pdz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pdz256m_vrsqrt14pdz256r_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PDZ256m + %ymm0 = VRSQRT14PDZ256r %1 + RET 0 +... +--- +name: stack_fold_vrsqrt14psz128m_vrsqrt14psz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14psz128m_vrsqrt14psz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PSZ128m + %xmm0 = VRSQRT14PSZ128r %1 + RET 0 +... +--- +name: stack_fold_vrsqrt14psz256m_vrsqrt14psz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14psz256m_vrsqrt14psz256r_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PSZ256m + %ymm0 = VRSQRT14PSZ256r %1 + RET 0 +... +--- +name: stack_fold_vsqrtpdz128m_vsqrtpdz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpdz128m_vsqrtpdz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPDZ128m + %xmm0 = VSQRTPDZ128r %1 + RET 0 +... +--- +name: stack_fold_vsqrtpdz256m_vsqrtpdz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpdz256m_vsqrtpdz256r_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPDZ256m + %ymm0 = VSQRTPDZ256r %1 + RET 0 +... +--- +name: stack_fold_vsqrtpsz128m_vsqrtpsz128r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpsz128m_vsqrtpsz128r_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPSZ128m + %xmm0 = VSQRTPSZ128r %1 + RET 0 +... +--- +name: stack_fold_vsqrtpsz256m_vsqrtpsz256r_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpsz256m_vsqrtpsz256r_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPSZ256m + %ymm0 = VSQRTPSZ256r %1 + RET 0 +... +--- +name: stack_fold_vaddpdz128rm_vaddpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddpdz128rm_vaddpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPDZ128rm + %xmm0 = VADDPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddpdz256rm_vaddpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vaddpdz256rm_vaddpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPDZ256rm + %ymm0 = VADDPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vaddpsz128rm_vaddpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddpsz128rm_vaddpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPSZ128rm + %xmm0 = VADDPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vaddpsz256rm_vaddpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vaddpsz256rm_vaddpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPSZ256rm + %ymm0 = VADDPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_valigndz128rmi_valigndz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_valigndz128rmi_valigndz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNDZ128rmi + %xmm0 = VALIGNDZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_valigndz256rmi_valigndz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_valigndz256rmi_valigndz256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNDZ256rmi + %ymm0 = VALIGNDZ256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_valignqz128rmi_valignqz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_valignqz128rmi_valignqz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNQZ128rmi + %xmm0 = VALIGNQZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_valignqz256rmi_valignqz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_valignqz256rmi_valignqz256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNQZ256rmi + %ymm0 = VALIGNQZ256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vblendmpdz128rm_vblendmpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpdz128rm_vblendmpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPDZ128rm + %xmm0 = VBLENDMPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vblendmpdz256rm_vblendmpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpdz256rm_vblendmpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPDZ256rm + %ymm0 = VBLENDMPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vblendmpsz128rm_vblendmpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpsz128rm_vblendmpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPSZ128rm + %xmm0 = VBLENDMPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vblendmpsz256rm_vblendmpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpsz256rm_vblendmpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPSZ256rm + %ymm0 = VBLENDMPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vbroadcastsdz256mkz_vbroadcastsdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastsdz256mkz_vbroadcastsdz256rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSDZ256mkz + %ymm0 = VBROADCASTSDZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vbroadcastssz128mkz_vbroadcastssz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastssz128mkz_vbroadcastssz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSSZ128mkz + %xmm0 = VBROADCASTSSZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vbroadcastssz256mkz_vbroadcastssz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vbroadcastssz256mkz_vbroadcastssz256rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSSZ256mkz + %ymm0 = VBROADCASTSSZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcmppdz128rmi_vcmppdz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdz128rmi_vcmppdz128rri_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZ128rmi + %k1 = VCMPPDZ128rri undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppdz128rmi_alt_vcmppdz128rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdz128rmi_alt_vcmppdz128rri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZ128rmi_alt + %k1 = VCMPPDZ128rri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppdz256rmi_vcmppdz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdz256rmi_vcmppdz256rri_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZ256rmi + %k1 = VCMPPDZ256rri undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppdz256rmi_alt_vcmppdz256rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdz256rmi_alt_vcmppdz256rri_alt_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZ256rmi_alt + %k1 = VCMPPDZ256rri_alt undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppsz128rmi_vcmppsz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppsz128rmi_vcmppsz128rri_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZ128rmi + %k1 = VCMPPSZ128rri undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppsz128rmi_alt_vcmppsz128rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppsz128rmi_alt_vcmppsz128rri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZ128rmi_alt + %k1 = VCMPPSZ128rri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppsz256rmi_vcmppsz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcmppsz256rmi_vcmppsz256rri_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZ256rmi + %k1 = VCMPPSZ256rri undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcmppsz256rmi_alt_vcmppsz256rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcmppsz256rmi_alt_vcmppsz256rri_alt_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZ256rmi_alt + %k1 = VCMPPSZ256rri_alt undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vcvtdq2pdz128rmkz_vcvtdq2pdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pdz128rmkz_vcvtdq2pdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PDZ128rmkz + %xmm0 = VCVTDQ2PDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtdq2pdz256rmkz_vcvtdq2pdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pdz256rmkz_vcvtdq2pdz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PDZ256rmkz + %ymm0 = VCVTDQ2PDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtdq2psz128rmkz_vcvtdq2psz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2psz128rmkz_vcvtdq2psz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PSZ128rmkz + %xmm0 = VCVTDQ2PSZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtdq2psz256rmkz_vcvtdq2psz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2psz256rmkz_vcvtdq2psz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PSZ256rmkz + %ymm0 = VCVTDQ2PSZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2dqz128rmkz_vcvtpd2dqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2dqz128rmkz_vcvtpd2dqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2DQZ128rmkz + %xmm0 = VCVTPD2DQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2dqz256rmkz_vcvtpd2dqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2dqz256rmkz_vcvtpd2dqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2DQZ256rmkz + %xmm0 = VCVTPD2DQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2psz128rmkz_vcvtpd2psz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2psz128rmkz_vcvtpd2psz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2PSZ128rmkz + %xmm0 = VCVTPD2PSZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2psz256rmkz_vcvtpd2psz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2psz256rmkz_vcvtpd2psz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2PSZ256rmkz + %xmm0 = VCVTPD2PSZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2udqz128rmkz_vcvtpd2udqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2udqz128rmkz_vcvtpd2udqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UDQZ128rmkz + %xmm0 = VCVTPD2UDQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtpd2udqz256rmkz_vcvtpd2udqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2udqz256rmkz_vcvtpd2udqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UDQZ256rmkz + %xmm0 = VCVTPD2UDQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtph2psz128rmkz_vcvtph2psz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtph2psz128rmkz_vcvtph2psz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPH2PSZ128rmkz + %xmm0 = VCVTPH2PSZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtph2psz256rmkz_vcvtph2psz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtph2psz256rmkz_vcvtph2psz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPH2PSZ256rmkz + %ymm0 = VCVTPH2PSZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2dqz128rmkz_vcvtps2dqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2dqz128rmkz_vcvtps2dqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2DQZ128rmkz + %xmm0 = VCVTPS2DQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2dqz256rmkz_vcvtps2dqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2dqz256rmkz_vcvtps2dqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2DQZ256rmkz + %ymm0 = VCVTPS2DQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2pdz128rmkz_vcvtps2pdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdz128rmkz_vcvtps2pdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZ128rmkz + %xmm0 = VCVTPS2PDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2pdz256rmkz_vcvtps2pdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdz256rmkz_vcvtps2pdz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZ256rmkz + %ymm0 = VCVTPS2PDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2udqz128rmkz_vcvtps2udqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2udqz128rmkz_vcvtps2udqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UDQZ128rmkz + %xmm0 = VCVTPS2UDQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtps2udqz256rmkz_vcvtps2udqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtps2udqz256rmkz_vcvtps2udqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UDQZ256rmkz + %ymm0 = VCVTPS2UDQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqz128rmkz_vcvttpd2dqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqz128rmkz_vcvttpd2dqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZ128rmkz + %xmm0 = VCVTTPD2DQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqz256rmkz_vcvttpd2dqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqz256rmkz_vcvttpd2dqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZ256rmkz + %xmm0 = VCVTTPD2DQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqz128rmkz_vcvttpd2udqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqz128rmkz_vcvttpd2udqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZ128rmkz + %xmm0 = VCVTTPD2UDQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqz256rmkz_vcvttpd2udqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqz256rmkz_vcvttpd2udqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZ256rmkz + %xmm0 = VCVTTPD2UDQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2dqz128rmkz_vcvttps2dqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqz128rmkz_vcvttps2dqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZ128rmkz + %xmm0 = VCVTTPS2DQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2dqz256rmkz_vcvttps2dqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqz256rmkz_vcvttps2dqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZ256rmkz + %ymm0 = VCVTTPS2DQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2udqz128rmkz_vcvttps2udqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqz128rmkz_vcvttps2udqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZ128rmkz + %xmm0 = VCVTTPS2UDQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvttps2udqz256rmkz_vcvttps2udqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqz256rmkz_vcvttps2udqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZ256rmkz + %ymm0 = VCVTTPS2UDQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtudq2pdz128rmkz_vcvtudq2pdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pdz128rmkz_vcvtudq2pdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PDZ128rmkz + %xmm0 = VCVTUDQ2PDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtudq2pdz256rmkz_vcvtudq2pdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pdz256rmkz_vcvtudq2pdz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PDZ256rmkz + %ymm0 = VCVTUDQ2PDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtudq2psz128rmkz_vcvtudq2psz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2psz128rmkz_vcvtudq2psz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PSZ128rmkz + %xmm0 = VCVTUDQ2PSZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vcvtudq2psz256rmkz_vcvtudq2psz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2psz256rmkz_vcvtudq2psz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PSZ256rmkz + %ymm0 = VCVTUDQ2PSZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vdivpdz128rm_vdivpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivpdz128rm_vdivpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPDZ128rm + %xmm0 = VDIVPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivpdz256rm_vdivpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vdivpdz256rm_vdivpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPDZ256rm + %ymm0 = VDIVPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vdivpsz128rm_vdivpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivpsz128rm_vdivpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPSZ128rm + %xmm0 = VDIVPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vdivpsz256rm_vdivpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vdivpsz256rm_vdivpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPSZ256rm + %ymm0 = VDIVPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vexpandpdz128rmkz_vexpandpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpdz128rmkz_vexpandpdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPDZ128rmkz + %xmm0 = VEXPANDPDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vexpandpdz256rmkz_vexpandpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpdz256rmkz_vexpandpdz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPDZ256rmkz + %ymm0 = VEXPANDPDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vexpandpsz128rmkz_vexpandpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpsz128rmkz_vexpandpsz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPSZ128rmkz + %xmm0 = VEXPANDPSZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vexpandpsz256rmkz_vexpandpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vexpandpsz256rmkz_vexpandpsz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPSZ256rmkz + %ymm0 = VEXPANDPSZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vgetexppdz128mkz_vgetexppdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppdz128mkz_vgetexppdz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDZ128mkz + %xmm0 = VGETEXPPDZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vgetexppdz256mkz_vgetexppdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppdz256mkz_vgetexppdz256rkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDZ256mkz + %ymm0 = VGETEXPPDZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vgetexppsz128mkz_vgetexppsz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppsz128mkz_vgetexppsz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSZ128mkz + %xmm0 = VGETEXPPSZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vgetexppsz256mkz_vgetexppsz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vgetexppsz256mkz_vgetexppsz256rkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSZ256mkz + %ymm0 = VGETEXPPSZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vgetmantpdz128rmikz_vgetmantpdz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdz128rmikz_vgetmantpdz128rrikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZ128rmikz + %xmm0 = VGETMANTPDZ128rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpdz256rmikz_vgetmantpdz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdz256rmikz_vgetmantpdz256rrikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZ256rmikz + %ymm0 = VGETMANTPDZ256rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpsz128rmikz_vgetmantpsz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpsz128rmikz_vgetmantpsz128rrikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZ128rmikz + %xmm0 = VGETMANTPSZ128rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpsz256rmikz_vgetmantpsz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vgetmantpsz256rmikz_vgetmantpsz256rrikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZ256rmikz + %ymm0 = VGETMANTPSZ256rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinsertf32x4z256rm_vinsertf32x4z256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf32x4z256rm_vinsertf32x4z256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF32x4Z256rm + %ymm0 = VINSERTF32x4Z256rr undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vinserti32x4z256rm_vinserti32x4z256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinserti32x4z256rm_vinserti32x4z256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI32x4Z256rm + %ymm0 = VINSERTI32x4Z256rr undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vmaxcpdz128rm_vmaxcpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdz128rm_vmaxcpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZ128rm + %xmm0 = VMAXCPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcpdz256rm_vmaxcpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdz256rm_vmaxcpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZ256rm + %ymm0 = VMAXCPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcpsz128rm_vmaxcpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpsz128rm_vmaxcpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZ128rm + %xmm0 = VMAXCPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxcpsz256rm_vmaxcpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpsz256rm_vmaxcpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZ256rm + %ymm0 = VMAXCPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxpdz128rm_vmaxpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpdz128rm_vmaxpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPDZ128rm + %xmm0 = VMAXPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxpdz256rm_vmaxpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpdz256rm_vmaxpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPDZ256rm + %ymm0 = VMAXPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxpsz128rm_vmaxpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpsz128rm_vmaxpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPSZ128rm + %xmm0 = VMAXPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmaxpsz256rm_vmaxpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpsz256rm_vmaxpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPSZ256rm + %ymm0 = VMAXPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpdz128rm_vmincpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpdz128rm_vmincpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZ128rm + %xmm0 = VMINCPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpdz256rm_vmincpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmincpdz256rm_vmincpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZ256rm + %ymm0 = VMINCPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpsz128rm_vmincpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpsz128rm_vmincpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZ128rm + %xmm0 = VMINCPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmincpsz256rm_vmincpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmincpsz256rm_vmincpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZ256rm + %ymm0 = VMINCPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vminpdz128rm_vminpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminpdz128rm_vminpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPDZ128rm + %xmm0 = VMINPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminpdz256rm_vminpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vminpdz256rm_vminpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPDZ256rm + %ymm0 = VMINPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vminpsz128rm_vminpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminpsz128rm_vminpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPSZ128rm + %xmm0 = VMINPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vminpsz256rm_vminpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vminpsz256rm_vminpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPSZ256rm + %ymm0 = VMINPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmovapdz128rmkz_vmovapdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovapdz128rmkz_vmovapdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPDZ128rmkz + %xmm0 = VMOVAPDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovapdz256rmkz_vmovapdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovapdz256rmkz_vmovapdz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPDZ256rmkz + %ymm0 = VMOVAPDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovapsz128rmkz_vmovapsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovapsz128rmkz_vmovapsz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPSZ128rmkz + %xmm0 = VMOVAPSZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovapsz256rmkz_vmovapsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovapsz256rmkz_vmovapsz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPSZ256rmkz + %ymm0 = VMOVAPSZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovddupz128rmkz_vmovddupz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovddupz128rmkz_vmovddupz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDDUPZ128rmkz + %xmm0 = VMOVDDUPZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovddupz256rmkz_vmovddupz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovddupz256rmkz_vmovddupz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDDUPZ256rmkz + %ymm0 = VMOVDDUPZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqa32z128rmkz_vmovdqa32z128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa32z128rmkz_vmovdqa32z128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA32Z128rmkz + %xmm0 = VMOVDQA32Z128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqa32z256rmkz_vmovdqa32z256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa32z256rmkz_vmovdqa32z256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA32Z256rmkz + %ymm0 = VMOVDQA32Z256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqa64z128rmkz_vmovdqa64z128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa64z128rmkz_vmovdqa64z128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA64Z128rmkz + %xmm0 = VMOVDQA64Z128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqa64z256rmkz_vmovdqa64z256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqa64z256rmkz_vmovdqa64z256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA64Z256rmkz + %ymm0 = VMOVDQA64Z256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqu32z128rmkz_vmovdqu32z128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu32z128rmkz_vmovdqu32z128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU32Z128rmkz + %xmm0 = VMOVDQU32Z128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqu32z256rmkz_vmovdqu32z256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu32z256rmkz_vmovdqu32z256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU32Z256rmkz + %ymm0 = VMOVDQU32Z256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqu64z128rmkz_vmovdqu64z128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu64z128rmkz_vmovdqu64z128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU64Z128rmkz + %xmm0 = VMOVDQU64Z128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovdqu64z256rmkz_vmovdqu64z256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovdqu64z256rmkz_vmovdqu64z256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU64Z256rmkz + %ymm0 = VMOVDQU64Z256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovshdupz128rmkz_vmovshdupz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovshdupz128rmkz_vmovshdupz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSHDUPZ128rmkz + %xmm0 = VMOVSHDUPZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovshdupz256rmkz_vmovshdupz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovshdupz256rmkz_vmovshdupz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSHDUPZ256rmkz + %ymm0 = VMOVSHDUPZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovsldupz128rmkz_vmovsldupz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovsldupz128rmkz_vmovsldupz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSLDUPZ128rmkz + %xmm0 = VMOVSLDUPZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovsldupz256rmkz_vmovsldupz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovsldupz256rmkz_vmovsldupz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSLDUPZ256rmkz + %ymm0 = VMOVSLDUPZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovupdz128rmkz_vmovupdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovupdz128rmkz_vmovupdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPDZ128rmkz + %xmm0 = VMOVUPDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovupdz256rmkz_vmovupdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovupdz256rmkz_vmovupdz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPDZ256rmkz + %ymm0 = VMOVUPDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovupsz128rmkz_vmovupsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vmovupsz128rmkz_vmovupsz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPSZ128rmkz + %xmm0 = VMOVUPSZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmovupsz256rmkz_vmovupsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vmovupsz256rmkz_vmovupsz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPSZ256rmkz + %ymm0 = VMOVUPSZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vmulpdz128rm_vmulpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulpdz128rm_vmulpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPDZ128rm + %xmm0 = VMULPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulpdz256rm_vmulpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmulpdz256rm_vmulpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPDZ256rm + %ymm0 = VMULPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vmulpsz128rm_vmulpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulpsz128rm_vmulpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPSZ128rm + %xmm0 = VMULPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vmulpsz256rm_vmulpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmulpsz256rm_vmulpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPSZ256rm + %ymm0 = VMULPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpabsdz128rmkz_vpabsdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsdz128rmkz_vpabsdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSDZ128rmkz + %xmm0 = VPABSDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpabsdz256rmkz_vpabsdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpabsdz256rmkz_vpabsdz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSDZ256rmkz + %ymm0 = VPABSDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpabsqz128rmkz_vpabsqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpabsqz128rmkz_vpabsqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSQZ128rmkz + %xmm0 = VPABSQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpabsqz256rmkz_vpabsqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpabsqz256rmkz_vpabsqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSQZ256rmkz + %ymm0 = VPABSQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpadddz128rm_vpadddz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpadddz128rm_vpadddz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDDZ128rm + %xmm0 = VPADDDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpadddz256rm_vpadddz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpadddz256rm_vpadddz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDDZ256rm + %ymm0 = VPADDDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddqz128rm_vpaddqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddqz128rm_vpaddqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDQZ128rm + %xmm0 = VPADDQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpaddqz256rm_vpaddqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddqz256rm_vpaddqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDQZ256rm + %ymm0 = VPADDQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpanddz128rm_vpanddz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpanddz128rm_vpanddz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDDZ128rm + %xmm0 = VPANDDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpanddz256rm_vpanddz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpanddz256rm_vpanddz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDDZ256rm + %ymm0 = VPANDDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpandndz128rm_vpandndz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpandndz128rm_vpandndz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNDZ128rm + %xmm0 = VPANDNDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpandndz256rm_vpandndz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpandndz256rm_vpandndz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNDZ256rm + %ymm0 = VPANDNDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpandnqz128rm_vpandnqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpandnqz128rm_vpandnqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNQZ128rm + %xmm0 = VPANDNQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpandnqz256rm_vpandnqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpandnqz256rm_vpandnqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNQZ256rm + %ymm0 = VPANDNQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpandqz128rm_vpandqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpandqz128rm_vpandqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDQZ128rm + %xmm0 = VPANDQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpandqz256rm_vpandqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpandqz256rm_vpandqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDQZ256rm + %ymm0 = VPANDQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmdz128rm_vpblendmdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmdz128rm_vpblendmdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMDZ128rm + %xmm0 = VPBLENDMDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmdz256rm_vpblendmdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmdz256rm_vpblendmdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMDZ256rm + %ymm0 = VPBLENDMDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmqz128rm_vpblendmqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmqz128rm_vpblendmqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMQZ128rm + %xmm0 = VPBLENDMQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpblendmqz256rm_vpblendmqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmqz256rm_vpblendmqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMQZ256rm + %ymm0 = VPBLENDMQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastdz128mkz_vpbroadcastdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastdz128mkz_vpbroadcastdz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTDZ128mkz + %xmm0 = VPBROADCASTDZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastdz256mkz_vpbroadcastdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastdz256mkz_vpbroadcastdz256rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTDZ256mkz + %ymm0 = VPBROADCASTDZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastqz128mkz_vpbroadcastqz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastqz128mkz_vpbroadcastqz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTQZ128mkz + %xmm0 = VPBROADCASTQZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpbroadcastqz256mkz_vpbroadcastqz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastqz256mkz_vpbroadcastqz256rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTQZ256mkz + %ymm0 = VPBROADCASTQZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpcmpdz128rmi_vpcmpdz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdz128rmi_vpcmpdz128rri_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZ128rmi + %k1 = VPCMPDZ128rri undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpdz128rmi_alt_vpcmpdz128rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdz128rmi_alt_vpcmpdz128rri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZ128rmi_alt + %k1 = VPCMPDZ128rri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpdz256rmi_vpcmpdz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdz256rmi_vpcmpdz256rri_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZ256rmi + %k1 = VPCMPDZ256rri undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpdz256rmi_alt_vpcmpdz256rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdz256rmi_alt_vpcmpdz256rri_alt_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZ256rmi_alt + %k1 = VPCMPDZ256rri_alt undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpeqdz128rm_vpcmpeqdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqdz128rm_vpcmpeqdz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQDZ128rm + %k1 = VPCMPEQDZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqdz256rm_vpcmpeqdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqdz256rm_vpcmpeqdz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQDZ256rm + %k1 = VPCMPEQDZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqqz128rm_vpcmpeqqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqqz128rm_vpcmpeqqz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQQZ128rm + %k1 = VPCMPEQQZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpeqqz256rm_vpcmpeqqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqqz256rm_vpcmpeqqz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQQZ256rm + %k1 = VPCMPEQQZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtdz128rm_vpcmpgtdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtdz128rm_vpcmpgtdz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTDZ128rm + %k1 = VPCMPGTDZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtdz256rm_vpcmpgtdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtdz256rm_vpcmpgtdz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTDZ256rm + %k1 = VPCMPGTDZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtqz128rm_vpcmpgtqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtqz128rm_vpcmpgtqz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTQZ128rm + %k1 = VPCMPGTQZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpgtqz256rm_vpcmpgtqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtqz256rm_vpcmpgtqz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTQZ256rm + %k1 = VPCMPGTQZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vpcmpqz128rmi_vpcmpqz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqz128rmi_vpcmpqz128rri_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZ128rmi + %k1 = VPCMPQZ128rri undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpqz128rmi_alt_vpcmpqz128rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqz128rmi_alt_vpcmpqz128rri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZ128rmi_alt + %k1 = VPCMPQZ128rri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpqz256rmi_vpcmpqz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqz256rmi_vpcmpqz256rri_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZ256rmi + %k1 = VPCMPQZ256rri undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpqz256rmi_alt_vpcmpqz256rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqz256rmi_alt_vpcmpqz256rri_alt_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZ256rmi_alt + %k1 = VPCMPQZ256rri_alt undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudz128rmi_vpcmpudz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudz128rmi_vpcmpudz128rri_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZ128rmi + %k1 = VPCMPUDZ128rri undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudz128rmi_alt_vpcmpudz128rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudz128rmi_alt_vpcmpudz128rri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZ128rmi_alt + %k1 = VPCMPUDZ128rri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudz256rmi_vpcmpudz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudz256rmi_vpcmpudz256rri_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZ256rmi + %k1 = VPCMPUDZ256rri undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudz256rmi_alt_vpcmpudz256rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudz256rmi_alt_vpcmpudz256rri_alt_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZ256rmi_alt + %k1 = VPCMPUDZ256rri_alt undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqz128rmi_vpcmpuqz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqz128rmi_vpcmpuqz128rri_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZ128rmi + %k1 = VPCMPUQZ128rri undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqz128rmi_alt_vpcmpuqz128rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqz128rmi_alt_vpcmpuqz128rri_alt_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZ128rmi_alt + %k1 = VPCMPUQZ128rri_alt undef %xmm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqz256rmi_vpcmpuqz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqz256rmi_vpcmpuqz256rri_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZ256rmi + %k1 = VPCMPUQZ256rri undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqz256rmi_alt_vpcmpuqz256rri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqz256rmi_alt_vpcmpuqz256rri_alt_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZ256rmi_alt + %k1 = VPCMPUQZ256rri_alt undef %ymm0, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermdz256rm_vpermdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermdz256rm_vpermdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMDZ256rm + %ymm0 = VPERMDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpermilpdz128mikz_vpermilpdz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz128mikz_vpermilpdz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ128mikz + %xmm0 = VPERMILPDZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermilpdz128rm_vpermilpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz128rm_vpermilpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ128rm + %xmm0 = VPERMILPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpermilpdz256mikz_vpermilpdz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz256mikz_vpermilpdz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ256mikz + %ymm0 = VPERMILPDZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermilpdz256rm_vpermilpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz256rm_vpermilpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ256rm + %ymm0 = VPERMILPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpermilpsz128mikz_vpermilpsz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz128mikz_vpermilpsz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ128mikz + %xmm0 = VPERMILPSZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermilpsz128rm_vpermilpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz128rm_vpermilpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ128rm + %xmm0 = VPERMILPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpermilpsz256mikz_vpermilpsz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz256mikz_vpermilpsz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ256mikz + %ymm0 = VPERMILPSZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermilpsz256rm_vpermilpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz256rm_vpermilpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ256rm + %ymm0 = VPERMILPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpermpdz256mikz_vpermpdz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermpdz256mikz_vpermpdz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZ256mikz + %ymm0 = VPERMPDZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermpdz256rm_vpermpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermpdz256rm_vpermpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZ256rm + %ymm0 = VPERMPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpermpsz256rm_vpermpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermpsz256rm_vpermpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPSZ256rm + %ymm0 = VPERMPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpermqz256mikz_vpermqz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpermqz256mikz_vpermqz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZ256mikz + %ymm0 = VPERMQZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermqz256rm_vpermqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermqz256rm_vpermqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZ256rm + %ymm0 = VPERMQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpexpanddz128rmkz_vpexpanddz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpexpanddz128rmkz_vpexpanddz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDDZ128rmkz + %xmm0 = VPEXPANDDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpexpanddz256rmkz_vpexpanddz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpexpanddz256rmkz_vpexpanddz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDDZ256rmkz + %ymm0 = VPEXPANDDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpexpandqz128rmkz_vpexpandqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpexpandqz128rmkz_vpexpandqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDQZ128rmkz + %xmm0 = VPEXPANDQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpexpandqz256rmkz_vpexpandqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpexpandqz256rmkz_vpexpandqz256rrkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDQZ256rmkz + %ymm0 = VPEXPANDQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsdz128rm_vpmaxsdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsdz128rm_vpmaxsdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSDZ128rm + %xmm0 = VPMAXSDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsdz256rm_vpmaxsdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsdz256rm_vpmaxsdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSDZ256rm + %ymm0 = VPMAXSDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsqz128rm_vpmaxsqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsqz128rm_vpmaxsqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSQZ128rm + %xmm0 = VPMAXSQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxsqz256rm_vpmaxsqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsqz256rm_vpmaxsqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSQZ256rm + %ymm0 = VPMAXSQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxudz128rm_vpmaxudz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxudz128rm_vpmaxudz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUDZ128rm + %xmm0 = VPMAXUDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxudz256rm_vpmaxudz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxudz256rm_vpmaxudz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUDZ256rm + %ymm0 = VPMAXUDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxuqz128rm_vpmaxuqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuqz128rm_vpmaxuqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUQZ128rm + %xmm0 = VPMAXUQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmaxuqz256rm_vpmaxuqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuqz256rm_vpmaxuqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUQZ256rm + %ymm0 = VPMAXUQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsdz128rm_vpminsdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsdz128rm_vpminsdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSDZ128rm + %xmm0 = VPMINSDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsdz256rm_vpminsdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminsdz256rm_vpminsdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSDZ256rm + %ymm0 = VPMINSDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsqz128rm_vpminsqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsqz128rm_vpminsqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSQZ128rm + %xmm0 = VPMINSQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminsqz256rm_vpminsqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminsqz256rm_vpminsqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSQZ256rm + %ymm0 = VPMINSQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminudz128rm_vpminudz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminudz128rm_vpminudz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUDZ128rm + %xmm0 = VPMINUDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminudz256rm_vpminudz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminudz256rm_vpminudz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUDZ256rm + %ymm0 = VPMINUDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpminuqz128rm_vpminuqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminuqz128rm_vpminuqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUQZ128rm + %xmm0 = VPMINUQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpminuqz256rm_vpminuqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminuqz256rm_vpminuqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUQZ256rm + %ymm0 = VPMINUQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxbdz128rmkz_vpmovsxbdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbdz128rmkz_vpmovsxbdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBDZ128rmkz + %xmm0 = VPMOVSXBDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxbdz256rmkz_vpmovsxbdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbdz256rmkz_vpmovsxbdz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBDZ256rmkz + %ymm0 = VPMOVSXBDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxbqz128rmkz_vpmovsxbqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbqz128rmkz_vpmovsxbqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBQZ128rmkz + %xmm0 = VPMOVSXBQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxbqz256rmkz_vpmovsxbqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbqz256rmkz_vpmovsxbqz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBQZ256rmkz + %ymm0 = VPMOVSXBQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxdqz128rmkz_vpmovsxdqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxdqz128rmkz_vpmovsxdqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXDQZ128rmkz + %xmm0 = VPMOVSXDQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxdqz256rmkz_vpmovsxdqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxdqz256rmkz_vpmovsxdqz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXDQZ256rmkz + %ymm0 = VPMOVSXDQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxwdz128rmkz_vpmovsxwdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwdz128rmkz_vpmovsxwdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWDZ128rmkz + %xmm0 = VPMOVSXWDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxwdz256rmkz_vpmovsxwdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwdz256rmkz_vpmovsxwdz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWDZ256rmkz + %ymm0 = VPMOVSXWDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxwqz128rmkz_vpmovsxwqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwqz128rmkz_vpmovsxwqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWQZ128rmkz + %xmm0 = VPMOVSXWQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovsxwqz256rmkz_vpmovsxwqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwqz256rmkz_vpmovsxwqz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWQZ256rmkz + %ymm0 = VPMOVSXWQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxbdz128rmkz_vpmovzxbdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbdz128rmkz_vpmovzxbdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBDZ128rmkz + %xmm0 = VPMOVZXBDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxbdz256rmkz_vpmovzxbdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbdz256rmkz_vpmovzxbdz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBDZ256rmkz + %ymm0 = VPMOVZXBDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxbqz128rmkz_vpmovzxbqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbqz128rmkz_vpmovzxbqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBQZ128rmkz + %xmm0 = VPMOVZXBQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxbqz256rmkz_vpmovzxbqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbqz256rmkz_vpmovzxbqz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBQZ256rmkz + %ymm0 = VPMOVZXBQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxdqz128rmkz_vpmovzxdqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxdqz128rmkz_vpmovzxdqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXDQZ128rmkz + %xmm0 = VPMOVZXDQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxdqz256rmkz_vpmovzxdqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxdqz256rmkz_vpmovzxdqz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXDQZ256rmkz + %ymm0 = VPMOVZXDQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxwdz128rmkz_vpmovzxwdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwdz128rmkz_vpmovzxwdz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWDZ128rmkz + %xmm0 = VPMOVZXWDZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxwdz256rmkz_vpmovzxwdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwdz256rmkz_vpmovzxwdz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWDZ256rmkz + %ymm0 = VPMOVZXWDZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxwqz128rmkz_vpmovzxwqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwqz128rmkz_vpmovzxwqz128rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWQZ128rmkz + %xmm0 = VPMOVZXWQZ128rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmovzxwqz256rmkz_vpmovzxwqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwqz256rmkz_vpmovzxwqz256rrkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWQZ256rmkz + %ymm0 = VPMOVZXWQZ256rrkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vpmuldqz128rm_vpmuldqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmuldqz128rm_vpmuldqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULDQZ128rm + %xmm0 = VPMULDQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmuldqz256rm_vpmuldqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmuldqz256rm_vpmuldqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULDQZ256rm + %ymm0 = VPMULDQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulldz128rm_vpmulldz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulldz128rm_vpmulldz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLDZ128rm + %xmm0 = VPMULLDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmulldz256rm_vpmulldz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulldz256rm_vpmulldz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLDZ256rm + %ymm0 = VPMULLDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpmuludqz128rm_vpmuludqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmuludqz128rm_vpmuludqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULUDQZ128rm + %xmm0 = VPMULUDQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpmuludqz256rm_vpmuludqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmuludqz256rm_vpmuludqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULUDQZ256rm + %ymm0 = VPMULUDQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpordz128rm_vpordz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpordz128rm_vpordz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORDZ128rm + %xmm0 = VPORDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpordz256rm_vpordz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpordz256rm_vpordz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORDZ256rm + %ymm0 = VPORDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vporqz128rm_vporqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vporqz128rm_vporqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORQZ128rm + %xmm0 = VPORQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vporqz256rm_vporqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vporqz256rm_vporqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORQZ256rm + %ymm0 = VPORQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vproldz128mikz_vproldz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vproldz128mikz_vproldz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLDZ128mikz + %xmm0 = VPROLDZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vproldz256mikz_vproldz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vproldz256mikz_vproldz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLDZ256mikz + %ymm0 = VPROLDZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vprolqz128mikz_vprolqz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprolqz128mikz_vprolqz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLQZ128mikz + %xmm0 = VPROLQZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vprolqz256mikz_vprolqz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vprolqz256mikz_vprolqz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLQZ256mikz + %ymm0 = VPROLQZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vprolvdz128rm_vprolvdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprolvdz128rm_vprolvdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVDZ128rm + %xmm0 = VPROLVDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vprolvdz256rm_vprolvdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vprolvdz256rm_vprolvdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVDZ256rm + %ymm0 = VPROLVDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vprolvqz128rm_vprolvqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprolvqz128rm_vprolvqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVQZ128rm + %xmm0 = VPROLVQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vprolvqz256rm_vprolvqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vprolvqz256rm_vprolvqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVQZ256rm + %ymm0 = VPROLVQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vprordz128mikz_vprordz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprordz128mikz_vprordz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORDZ128mikz + %xmm0 = VPRORDZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vprordz256mikz_vprordz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vprordz256mikz_vprordz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORDZ256mikz + %ymm0 = VPRORDZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vprorqz128mikz_vprorqz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprorqz128mikz_vprorqz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORQZ128mikz + %xmm0 = VPRORQZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vprorqz256mikz_vprorqz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vprorqz256mikz_vprorqz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORQZ256mikz + %ymm0 = VPRORQZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vprorvdz128rm_vprorvdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprorvdz128rm_vprorvdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVDZ128rm + %xmm0 = VPRORVDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vprorvdz256rm_vprorvdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vprorvdz256rm_vprorvdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVDZ256rm + %ymm0 = VPRORVDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vprorvqz128rm_vprorvqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprorvqz128rm_vprorvqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVQZ128rm + %xmm0 = VPRORVQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vprorvqz256rm_vprorvqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vprorvqz256rm_vprorvqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVQZ256rm + %ymm0 = VPRORVQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpshufdz128mikz_vpshufdz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshufdz128mikz_vpshufdz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFDZ128mikz + %xmm0 = VPSHUFDZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpshufdz256mikz_vpshufdz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpshufdz256mikz_vpshufdz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFDZ256mikz + %ymm0 = VPSHUFDZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpslldz128mikz_vpslldz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpslldz128mikz_vpslldz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ128mikz + %xmm0 = VPSLLDZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpslldz128rm_vpslldz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpslldz128rm_vpslldz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ128rm + %xmm0 = VPSLLDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpslldz256mikz_vpslldz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpslldz256mikz_vpslldz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ256mikz + %ymm0 = VPSLLDZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpslldz256rm_vpslldz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpslldz256rm_vpslldz256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ256rm + %ymm0 = VPSLLDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllqz128mikz_vpsllqz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsllqz128mikz_vpsllqz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ128mikz + %xmm0 = VPSLLQZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsllqz128rm_vpsllqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllqz128rm_vpsllqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ128rm + %xmm0 = VPSLLQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllqz256mikz_vpsllqz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsllqz256mikz_vpsllqz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ256mikz + %ymm0 = VPSLLQZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsllqz256rm_vpsllqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllqz256rm_vpsllqz256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ256rm + %ymm0 = VPSLLQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvdz128rm_vpsllvdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvdz128rm_vpsllvdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVDZ128rm + %xmm0 = VPSLLVDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvdz256rm_vpsllvdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvdz256rm_vpsllvdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVDZ256rm + %ymm0 = VPSLLVDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvqz128rm_vpsllvqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvqz128rm_vpsllvqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVQZ128rm + %xmm0 = VPSLLVQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsllvqz256rm_vpsllvqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvqz256rm_vpsllvqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVQZ256rm + %ymm0 = VPSLLVQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsradz128mikz_vpsradz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsradz128mikz_vpsradz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ128mikz + %xmm0 = VPSRADZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsradz128rm_vpsradz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsradz128rm_vpsradz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ128rm + %xmm0 = VPSRADZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsradz256mikz_vpsradz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsradz256mikz_vpsradz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ256mikz + %ymm0 = VPSRADZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsradz256rm_vpsradz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsradz256rm_vpsradz256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ256rm + %ymm0 = VPSRADZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsraqz128mikz_vpsraqz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsraqz128mikz_vpsraqz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ128mikz + %xmm0 = VPSRAQZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsraqz128rm_vpsraqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsraqz128rm_vpsraqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ128rm + %xmm0 = VPSRAQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsraqz256mikz_vpsraqz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsraqz256mikz_vpsraqz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ256mikz + %ymm0 = VPSRAQZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsraqz256rm_vpsraqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsraqz256rm_vpsraqz256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ256rm + %ymm0 = VPSRAQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsravdz128rm_vpsravdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravdz128rm_vpsravdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVDZ128rm + %xmm0 = VPSRAVDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsravdz256rm_vpsravdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsravdz256rm_vpsravdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVDZ256rm + %ymm0 = VPSRAVDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsravqz128rm_vpsravqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravqz128rm_vpsravqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVQZ128rm + %xmm0 = VPSRAVQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsravqz256rm_vpsravqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsravqz256rm_vpsravqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVQZ256rm + %ymm0 = VPSRAVQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrldz128mikz_vpsrldz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrldz128mikz_vpsrldz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ128mikz + %xmm0 = VPSRLDZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrldz128rm_vpsrldz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrldz128rm_vpsrldz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ128rm + %xmm0 = VPSRLDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrldz256mikz_vpsrldz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsrldz256mikz_vpsrldz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ256mikz + %ymm0 = VPSRLDZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrldz256rm_vpsrldz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrldz256rm_vpsrldz256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ256rm + %ymm0 = VPSRLDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlqz128mikz_vpsrlqz128rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz128mikz_vpsrlqz128rikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ128mikz + %xmm0 = VPSRLQZ128rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrlqz128rm_vpsrlqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz128rm_vpsrlqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ128rm + %xmm0 = VPSRLQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlqz256mikz_vpsrlqz256rikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz256mikz_vpsrlqz256rikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ256mikz + %ymm0 = VPSRLQZ256rikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpsrlqz256rm_vpsrlqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz256rm_vpsrlqz256rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ256rm + %ymm0 = VPSRLQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvdz128rm_vpsrlvdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvdz128rm_vpsrlvdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVDZ128rm + %xmm0 = VPSRLVDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvdz256rm_vpsrlvdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvdz256rm_vpsrlvdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVDZ256rm + %ymm0 = VPSRLVDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvqz128rm_vpsrlvqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvqz128rm_vpsrlvqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVQZ128rm + %xmm0 = VPSRLVQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsrlvqz256rm_vpsrlvqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvqz256rm_vpsrlvqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVQZ256rm + %ymm0 = VPSRLVQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubdz128rm_vpsubdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubdz128rm_vpsubdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBDZ128rm + %xmm0 = VPSUBDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubdz256rm_vpsubdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubdz256rm_vpsubdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBDZ256rm + %ymm0 = VPSUBDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubqz128rm_vpsubqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubqz128rm_vpsubqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBQZ128rm + %xmm0 = VPSUBQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpsubqz256rm_vpsubqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubqz256rm_vpsubqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBQZ256rm + %ymm0 = VPSUBQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vptestmdz128rm_vptestmdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmdz128rm_vptestmdz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMDZ128rm + %k1 = VPTESTMDZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestmdz256rm_vptestmdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestmdz256rm_vptestmdz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMDZ256rm + %k1 = VPTESTMDZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vptestmqz128rm_vptestmqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmqz128rm_vptestmqz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMQZ128rm + %k1 = VPTESTMQZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestmqz256rm_vptestmqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestmqz256rm_vptestmqz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMQZ256rm + %k1 = VPTESTMQZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmdz128rm_vptestnmdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmdz128rm_vptestnmdz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMDZ128rm + %k1 = VPTESTNMDZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmdz256rm_vptestnmdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmdz256rm_vptestnmdz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMDZ256rm + %k1 = VPTESTNMDZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmqz128rm_vptestnmqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmqz128rm_vptestnmqz128rr_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMQZ128rm + %k1 = VPTESTNMQZ128rr undef %xmm0, %2 + RET 0 +... +--- +name: stack_fold_vptestnmqz256rm_vptestnmqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmqz256rm_vptestnmqz256rr_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMQZ256rm + %k1 = VPTESTNMQZ256rr undef %ymm0, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhdqz128rm_vpunpckhdqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhdqz128rm_vpunpckhdqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHDQZ128rm + %xmm0 = VPUNPCKHDQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhdqz256rm_vpunpckhdqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhdqz256rm_vpunpckhdqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHDQZ256rm + %ymm0 = VPUNPCKHDQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhqdqz128rm_vpunpckhqdqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhqdqz128rm_vpunpckhqdqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHQDQZ128rm + %xmm0 = VPUNPCKHQDQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckhqdqz256rm_vpunpckhqdqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhqdqz256rm_vpunpckhqdqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHQDQZ256rm + %ymm0 = VPUNPCKHQDQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckldqz128rm_vpunpckldqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckldqz128rm_vpunpckldqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLDQZ128rm + %xmm0 = VPUNPCKLDQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpckldqz256rm_vpunpckldqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckldqz256rm_vpunpckldqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLDQZ256rm + %ymm0 = VPUNPCKLDQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklqdqz128rm_vpunpcklqdqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklqdqz128rm_vpunpcklqdqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLQDQZ128rm + %xmm0 = VPUNPCKLQDQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpunpcklqdqz256rm_vpunpcklqdqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklqdqz256rm_vpunpcklqdqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLQDQZ256rm + %ymm0 = VPUNPCKLQDQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpxordz128rm_vpxordz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpxordz128rm_vpxordz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORDZ128rm + %xmm0 = VPXORDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpxordz256rm_vpxordz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpxordz256rm_vpxordz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORDZ256rm + %ymm0 = VPXORDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vpxorqz128rm_vpxorqz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpxorqz128rm_vpxorqz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORQZ128rm + %xmm0 = VPXORQZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpxorqz256rm_vpxorqz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpxorqz256rm_vpxorqz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORQZ256rm + %ymm0 = VPXORQZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vrcp14pdz128mkz_vrcp14pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14pdz128mkz_vrcp14pdz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PDZ128mkz + %xmm0 = VRCP14PDZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrcp14pdz256mkz_vrcp14pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14pdz256mkz_vrcp14pdz256rkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PDZ256mkz + %ymm0 = VRCP14PDZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrcp14psz128mkz_vrcp14psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14psz128mkz_vrcp14psz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PSZ128mkz + %xmm0 = VRCP14PSZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrcp14psz256mkz_vrcp14psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrcp14psz256mkz_vrcp14psz256rkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PSZ256mkz + %ymm0 = VRCP14PSZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrndscalepdz128rmikz_vrndscalepdz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdz128rmikz_vrndscalepdz128rrikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZ128rmikz + %xmm0 = VRNDSCALEPDZ128rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepdz256rmikz_vrndscalepdz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdz256rmikz_vrndscalepdz256rrikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZ256rmikz + %ymm0 = VRNDSCALEPDZ256rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepsz128rmikz_vrndscalepsz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepsz128rmikz_vrndscalepsz128rrikz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZ128rmikz + %xmm0 = VRNDSCALEPSZ128rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepsz256rmikz_vrndscalepsz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrndscalepsz256rmikz_vrndscalepsz256rrikz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZ256rmikz + %ymm0 = VRNDSCALEPSZ256rrikz undef %k1, %2, 0 + RET 0 +... +--- +name: stack_fold_vrsqrt14pdz128mkz_vrsqrt14pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pdz128mkz_vrsqrt14pdz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PDZ128mkz + %xmm0 = VRSQRT14PDZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrsqrt14pdz256mkz_vrsqrt14pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pdz256mkz_vrsqrt14pdz256rkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PDZ256mkz + %ymm0 = VRSQRT14PDZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrsqrt14psz128mkz_vrsqrt14psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14psz128mkz_vrsqrt14psz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PSZ128mkz + %xmm0 = VRSQRT14PSZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vrsqrt14psz256mkz_vrsqrt14psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14psz256mkz_vrsqrt14psz256rkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PSZ256mkz + %ymm0 = VRSQRT14PSZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vscalefpdz128rm_vscalefpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpdz128rm_vscalefpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPDZ128rm + %xmm0 = VSCALEFPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vscalefpdz256rm_vscalefpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpdz256rm_vscalefpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPDZ256rm + %ymm0 = VSCALEFPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vscalefpsz128rm_vscalefpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpsz128rm_vscalefpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPSZ128rm + %xmm0 = VSCALEFPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vscalefpsz256rm_vscalefpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpsz256rm_vscalefpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPSZ256rm + %ymm0 = VSCALEFPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vshuff32x4z256rmi_vshuff32x4z256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshuff32x4z256rmi_vshuff32x4z256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF32X4Z256rmi + %ymm0 = VSHUFF32X4Z256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshuff64x2z256rmi_vshuff64x2z256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshuff64x2z256rmi_vshuff64x2z256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF64X2Z256rmi + %ymm0 = VSHUFF64X2Z256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufi32x4z256rmi_vshufi32x4z256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshufi32x4z256rmi_vshufi32x4z256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI32X4Z256rmi + %ymm0 = VSHUFI32X4Z256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufi64x2z256rmi_vshufi64x2z256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshufi64x2z256rmi_vshufi64x2z256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI64X2Z256rmi + %ymm0 = VSHUFI64X2Z256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufpdz128rmi_vshufpdz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vshufpdz128rmi_vshufpdz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPDZ128rmi + %xmm0 = VSHUFPDZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufpdz256rmi_vshufpdz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshufpdz256rmi_vshufpdz256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPDZ256rmi + %ymm0 = VSHUFPDZ256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufpsz128rmi_vshufpsz128rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vshufpsz128rmi_vshufpsz128rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPSZ128rmi + %xmm0 = VSHUFPSZ128rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vshufpsz256rmi_vshufpsz256rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshufpsz256rmi_vshufpsz256rri_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPSZ256rmi + %ymm0 = VSHUFPSZ256rri undef %ymm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vsqrtpdz128mkz_vsqrtpdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpdz128mkz_vsqrtpdz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPDZ128mkz + %xmm0 = VSQRTPDZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vsqrtpdz256mkz_vsqrtpdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpdz256mkz_vsqrtpdz256rkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPDZ256mkz + %ymm0 = VSQRTPDZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vsqrtpsz128mkz_vsqrtpsz128rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpsz128mkz_vsqrtpsz128rkz_test + %2 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPSZ128mkz + %xmm0 = VSQRTPSZ128rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vsqrtpsz256mkz_vsqrtpsz256rkz_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vsqrtpsz256mkz_vsqrtpsz256rkz_test + %2 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPSZ256mkz + %ymm0 = VSQRTPSZ256rkz undef %k1, %2 + RET 0 +... +--- +name: stack_fold_vsubpdz128rm_vsubpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubpdz128rm_vsubpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPDZ128rm + %xmm0 = VSUBPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubpdz256rm_vsubpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vsubpdz256rm_vsubpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPDZ256rm + %ymm0 = VSUBPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vsubpsz128rm_vsubpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubpsz128rm_vsubpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPSZ128rm + %xmm0 = VSUBPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vsubpsz256rm_vsubpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vsubpsz256rm_vsubpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPSZ256rm + %ymm0 = VSUBPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vunpckhpdz128rm_vunpckhpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpdz128rm_vunpckhpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPDZ128rm + %xmm0 = VUNPCKHPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpckhpdz256rm_vunpckhpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpdz256rm_vunpckhpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPDZ256rm + %ymm0 = VUNPCKHPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vunpckhpsz128rm_vunpckhpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpsz128rm_vunpckhpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPSZ128rm + %xmm0 = VUNPCKHPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpckhpsz256rm_vunpckhpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpsz256rm_vunpckhpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPSZ256rm + %ymm0 = VUNPCKHPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vunpcklpdz128rm_vunpcklpdz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpdz128rm_vunpcklpdz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPDZ128rm + %xmm0 = VUNPCKLPDZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpcklpdz256rm_vunpcklpdz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpdz256rm_vunpcklpdz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPDZ256rm + %ymm0 = VUNPCKLPDZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vunpcklpsz128rm_vunpcklpsz128rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpsz128rm_vunpcklpsz128rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPSZ128rm + %xmm0 = VUNPCKLPSZ128rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vunpcklpsz256rm_vunpcklpsz256rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpsz256rm_vunpcklpsz256rr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPSZ256rm + %ymm0 = VUNPCKLPSZ256rr undef %ymm1, %2 + RET 0 +... +--- +name: stack_fold_vaddpdz128rmkz_vaddpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddpdz128rmkz_vaddpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPDZ128rmkz + %xmm0 = VADDPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vaddpdz256rmkz_vaddpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vaddpdz256rmkz_vaddpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPDZ256rmkz + %ymm0 = VADDPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vaddpsz128rmkz_vaddpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vaddpsz128rmkz_vaddpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPSZ128rmkz + %xmm0 = VADDPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vaddpsz256rmkz_vaddpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vaddpsz256rmkz_vaddpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPSZ256rmkz + %ymm0 = VADDPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_valigndz128rmikz_valigndz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_valigndz128rmikz_valigndz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNDZ128rmikz + %xmm0 = VALIGNDZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_valigndz256rmikz_valigndz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_valigndz256rmikz_valigndz256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNDZ256rmikz + %ymm0 = VALIGNDZ256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_valignqz128rmikz_valignqz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_valignqz128rmikz_valignqz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNQZ128rmikz + %xmm0 = VALIGNQZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_valignqz256rmikz_valignqz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_valignqz256rmikz_valignqz256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNQZ256rmikz + %ymm0 = VALIGNQZ256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vblendmpdz128rmk_vblendmpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpdz128rmk_vblendmpdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPDZ128rmk + %xmm0 = VBLENDMPDZ128rrk undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vblendmpdz128rmkz_vblendmpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpdz128rmkz_vblendmpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPDZ128rmkz + %xmm0 = VBLENDMPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vblendmpdz256rmk_vblendmpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpdz256rmk_vblendmpdz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPDZ256rmk + %ymm0 = VBLENDMPDZ256rrk undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vblendmpdz256rmkz_vblendmpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpdz256rmkz_vblendmpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPDZ256rmkz + %ymm0 = VBLENDMPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vblendmpsz128rmk_vblendmpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpsz128rmk_vblendmpsz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPSZ128rmk + %xmm0 = VBLENDMPSZ128rrk undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vblendmpsz128rmkz_vblendmpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpsz128rmkz_vblendmpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPSZ128rmkz + %xmm0 = VBLENDMPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vblendmpsz256rmk_vblendmpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpsz256rmk_vblendmpsz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPSZ256rmk + %ymm0 = VBLENDMPSZ256rrk undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vblendmpsz256rmkz_vblendmpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vblendmpsz256rmkz_vblendmpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBLENDMPSZ256rmkz + %ymm0 = VBLENDMPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vbroadcastsdz256mk_vbroadcastsdz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vbroadcastsdz256mk_vbroadcastsdz256rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSDZ256mk + %ymm0 = VBROADCASTSDZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vbroadcastssz128mk_vbroadcastssz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vbroadcastssz128mk_vbroadcastssz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSSZ128mk + %xmm0 = VBROADCASTSSZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vbroadcastssz256mk_vbroadcastssz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vbroadcastssz256mk_vbroadcastssz256rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VBROADCASTSSZ256mk + %ymm0 = VBROADCASTSSZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcmppdz128rmi_altk_vcmppdz128rri_altk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdz128rmi_altk_vcmppdz128rri_altk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZ128rmi_altk + %k1 = VCMPPDZ128rri_altk undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppdz128rmik_vcmppdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdz128rmik_vcmppdz128rrik_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZ128rmik + %k1 = VCMPPDZ128rrik undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppdz256rmi_altk_vcmppdz256rri_altk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdz256rmi_altk_vcmppdz256rri_altk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZ256rmi_altk + %k1 = VCMPPDZ256rri_altk undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppdz256rmik_vcmppdz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcmppdz256rmik_vcmppdz256rrik_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPDZ256rmik + %k1 = VCMPPDZ256rrik undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppsz128rmi_altk_vcmppsz128rri_altk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppsz128rmi_altk_vcmppsz128rri_altk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZ128rmi_altk + %k1 = VCMPPSZ128rri_altk undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppsz128rmik_vcmppsz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcmppsz128rmik_vcmppsz128rrik_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZ128rmik + %k1 = VCMPPSZ128rrik undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppsz256rmi_altk_vcmppsz256rri_altk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcmppsz256rmi_altk_vcmppsz256rri_altk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZ256rmi_altk + %k1 = VCMPPSZ256rri_altk undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcmppsz256rmik_vcmppsz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vcmppsz256rmik_vcmppsz256rrik_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCMPPSZ256rmik + %k1 = VCMPPSZ256rrik undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vcvtdq2pdz128rmk_vcvtdq2pdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pdz128rmk_vcvtdq2pdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PDZ128rmk + %xmm0 = VCVTDQ2PDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtdq2pdz256rmk_vcvtdq2pdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2pdz256rmk_vcvtdq2pdz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PDZ256rmk + %ymm0 = VCVTDQ2PDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtdq2psz128rmk_vcvtdq2psz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2psz128rmk_vcvtdq2psz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PSZ128rmk + %xmm0 = VCVTDQ2PSZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtdq2psz256rmk_vcvtdq2psz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtdq2psz256rmk_vcvtdq2psz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTDQ2PSZ256rmk + %ymm0 = VCVTDQ2PSZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2dqz128rmk_vcvtpd2dqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2dqz128rmk_vcvtpd2dqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2DQZ128rmk + %xmm0 = VCVTPD2DQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2dqz256rmk_vcvtpd2dqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2dqz256rmk_vcvtpd2dqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2DQZ256rmk + %xmm0 = VCVTPD2DQZ256rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2psz128rmk_vcvtpd2psz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2psz128rmk_vcvtpd2psz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2PSZ128rmk + %xmm0 = VCVTPD2PSZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2psz256rmk_vcvtpd2psz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2psz256rmk_vcvtpd2psz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2PSZ256rmk + %xmm0 = VCVTPD2PSZ256rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2udqz128rmk_vcvtpd2udqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2udqz128rmk_vcvtpd2udqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UDQZ128rmk + %xmm0 = VCVTPD2UDQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtpd2udqz256rmk_vcvtpd2udqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtpd2udqz256rmk_vcvtpd2udqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPD2UDQZ256rmk + %xmm0 = VCVTPD2UDQZ256rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtph2psz128rmk_vcvtph2psz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtph2psz128rmk_vcvtph2psz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPH2PSZ128rmk + %xmm0 = VCVTPH2PSZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtph2psz256rmk_vcvtph2psz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtph2psz256rmk_vcvtph2psz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPH2PSZ256rmk + %ymm0 = VCVTPH2PSZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2dqz128rmk_vcvtps2dqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2dqz128rmk_vcvtps2dqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2DQZ128rmk + %xmm0 = VCVTPS2DQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2dqz256rmk_vcvtps2dqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2dqz256rmk_vcvtps2dqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2DQZ256rmk + %ymm0 = VCVTPS2DQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2pdz128rmk_vcvtps2pdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdz128rmk_vcvtps2pdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZ128rmk + %xmm0 = VCVTPS2PDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2pdz256rmk_vcvtps2pdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2pdz256rmk_vcvtps2pdz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2PDZ256rmk + %ymm0 = VCVTPS2PDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2udqz128rmk_vcvtps2udqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2udqz128rmk_vcvtps2udqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UDQZ128rmk + %xmm0 = VCVTPS2UDQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtps2udqz256rmk_vcvtps2udqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtps2udqz256rmk_vcvtps2udqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPS2UDQZ256rmk + %ymm0 = VCVTPS2UDQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqz128rmk_vcvttpd2dqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqz128rmk_vcvttpd2dqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZ128rmk + %xmm0 = VCVTTPD2DQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2dqz256rmk_vcvttpd2dqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2dqz256rmk_vcvttpd2dqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2DQZ256rmk + %xmm0 = VCVTTPD2DQZ256rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqz128rmk_vcvttpd2udqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqz128rmk_vcvttpd2udqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZ128rmk + %xmm0 = VCVTTPD2UDQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttpd2udqz256rmk_vcvttpd2udqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvttpd2udqz256rmk_vcvttpd2udqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPD2UDQZ256rmk + %xmm0 = VCVTTPD2UDQZ256rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2dqz128rmk_vcvttps2dqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqz128rmk_vcvttps2dqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZ128rmk + %xmm0 = VCVTTPS2DQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2dqz256rmk_vcvttps2dqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2dqz256rmk_vcvttps2dqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2DQZ256rmk + %ymm0 = VCVTTPS2DQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2udqz128rmk_vcvttps2udqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqz128rmk_vcvttps2udqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZ128rmk + %xmm0 = VCVTTPS2UDQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvttps2udqz256rmk_vcvttps2udqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvttps2udqz256rmk_vcvttps2udqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTTPS2UDQZ256rmk + %ymm0 = VCVTTPS2UDQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtudq2pdz128rmk_vcvtudq2pdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pdz128rmk_vcvtudq2pdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PDZ128rmk + %xmm0 = VCVTUDQ2PDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtudq2pdz256rmk_vcvtudq2pdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2pdz256rmk_vcvtudq2pdz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PDZ256rmk + %ymm0 = VCVTUDQ2PDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtudq2psz128rmk_vcvtudq2psz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2psz128rmk_vcvtudq2psz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PSZ128rmk + %xmm0 = VCVTUDQ2PSZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vcvtudq2psz256rmk_vcvtudq2psz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vcvtudq2psz256rmk_vcvtudq2psz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTUDQ2PSZ256rmk + %ymm0 = VCVTUDQ2PSZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vdivpdz128rmkz_vdivpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivpdz128rmkz_vdivpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPDZ128rmkz + %xmm0 = VDIVPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vdivpdz256rmkz_vdivpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vdivpdz256rmkz_vdivpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPDZ256rmkz + %ymm0 = VDIVPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vdivpsz128rmkz_vdivpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vdivpsz128rmkz_vdivpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPSZ128rmkz + %xmm0 = VDIVPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vdivpsz256rmkz_vdivpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vdivpsz256rmkz_vdivpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPSZ256rmkz + %ymm0 = VDIVPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vexpandpdz128rmk_vexpandpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vexpandpdz128rmk_vexpandpdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPDZ128rmk + %xmm0 = VEXPANDPDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vexpandpdz256rmk_vexpandpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vexpandpdz256rmk_vexpandpdz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPDZ256rmk + %ymm0 = VEXPANDPDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vexpandpsz128rmk_vexpandpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vexpandpsz128rmk_vexpandpsz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPSZ128rmk + %xmm0 = VEXPANDPSZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vexpandpsz256rmk_vexpandpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vexpandpsz256rmk_vexpandpsz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VEXPANDPSZ256rmk + %ymm0 = VEXPANDPSZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vfixupimmpdz128rmi_vfixupimmpdz128rri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdz128rmi_vfixupimmpdz128rri_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZ128rmi + %xmm0 = VFIXUPIMMPDZ128rri undef %xmm1, undef %xmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpdz256rmi_vfixupimmpdz256rri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdz256rmi_vfixupimmpdz256rri_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZ256rmi + %ymm0 = VFIXUPIMMPDZ256rri undef %ymm1, undef %ymm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpsz128rmi_vfixupimmpsz128rri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpsz128rmi_vfixupimmpsz128rri_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZ128rmi + %xmm0 = VFIXUPIMMPSZ128rri undef %xmm1, undef %xmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpsz256rmi_vfixupimmpsz256rri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpsz256rmi_vfixupimmpsz256rri_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZ256rmi + %ymm0 = VFIXUPIMMPSZ256rri undef %ymm1, undef %ymm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vfmadd132pdz128m_vfmadd132pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pdz128m_vfmadd132pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PDZ128m + %xmm0 = VFMADD132PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132pdz256m_vfmadd132pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pdz256m_vfmadd132pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PDZ256m + %ymm0 = VFMADD132PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132psz128m_vfmadd132psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132psz128m_vfmadd132psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PSZ128m + %xmm0 = VFMADD132PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132psz256m_vfmadd132psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132psz256m_vfmadd132psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PSZ256m + %ymm0 = VFMADD132PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213pdz128m_vfmadd213pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pdz128m_vfmadd213pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PDZ128m + %xmm0 = VFMADD213PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213pdz256m_vfmadd213pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pdz256m_vfmadd213pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PDZ256m + %ymm0 = VFMADD213PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213psz128m_vfmadd213psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213psz128m_vfmadd213psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PSZ128m + %xmm0 = VFMADD213PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213psz256m_vfmadd213psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213psz256m_vfmadd213psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PSZ256m + %ymm0 = VFMADD213PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231pdz128m_vfmadd231pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pdz128m_vfmadd231pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PDZ128m + %xmm0 = VFMADD231PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231pdz256m_vfmadd231pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pdz256m_vfmadd231pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PDZ256m + %ymm0 = VFMADD231PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231psz128m_vfmadd231psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231psz128m_vfmadd231psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PSZ128m + %xmm0 = VFMADD231PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231psz256m_vfmadd231psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231psz256m_vfmadd231psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PSZ256m + %ymm0 = VFMADD231PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pdz128m_vfmaddsub132pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pdz128m_vfmaddsub132pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PDZ128m + %xmm0 = VFMADDSUB132PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pdz256m_vfmaddsub132pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pdz256m_vfmaddsub132pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PDZ256m + %ymm0 = VFMADDSUB132PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub132psz128m_vfmaddsub132psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132psz128m_vfmaddsub132psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PSZ128m + %xmm0 = VFMADDSUB132PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub132psz256m_vfmaddsub132psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132psz256m_vfmaddsub132psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PSZ256m + %ymm0 = VFMADDSUB132PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pdz128m_vfmaddsub213pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pdz128m_vfmaddsub213pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PDZ128m + %xmm0 = VFMADDSUB213PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pdz256m_vfmaddsub213pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pdz256m_vfmaddsub213pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PDZ256m + %ymm0 = VFMADDSUB213PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub213psz128m_vfmaddsub213psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213psz128m_vfmaddsub213psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PSZ128m + %xmm0 = VFMADDSUB213PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub213psz256m_vfmaddsub213psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213psz256m_vfmaddsub213psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PSZ256m + %ymm0 = VFMADDSUB213PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pdz128m_vfmaddsub231pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pdz128m_vfmaddsub231pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PDZ128m + %xmm0 = VFMADDSUB231PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pdz256m_vfmaddsub231pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pdz256m_vfmaddsub231pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PDZ256m + %ymm0 = VFMADDSUB231PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub231psz128m_vfmaddsub231psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231psz128m_vfmaddsub231psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PSZ128m + %xmm0 = VFMADDSUB231PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub231psz256m_vfmaddsub231psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231psz256m_vfmaddsub231psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PSZ256m + %ymm0 = VFMADDSUB231PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132pdz128m_vfmsub132pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pdz128m_vfmsub132pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PDZ128m + %xmm0 = VFMSUB132PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132pdz256m_vfmsub132pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pdz256m_vfmsub132pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PDZ256m + %ymm0 = VFMSUB132PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132psz128m_vfmsub132psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132psz128m_vfmsub132psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PSZ128m + %xmm0 = VFMSUB132PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132psz256m_vfmsub132psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132psz256m_vfmsub132psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PSZ256m + %ymm0 = VFMSUB132PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213pdz128m_vfmsub213pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pdz128m_vfmsub213pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PDZ128m + %xmm0 = VFMSUB213PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213pdz256m_vfmsub213pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pdz256m_vfmsub213pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PDZ256m + %ymm0 = VFMSUB213PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213psz128m_vfmsub213psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213psz128m_vfmsub213psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PSZ128m + %xmm0 = VFMSUB213PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213psz256m_vfmsub213psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213psz256m_vfmsub213psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PSZ256m + %ymm0 = VFMSUB213PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231pdz128m_vfmsub231pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pdz128m_vfmsub231pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PDZ128m + %xmm0 = VFMSUB231PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231pdz256m_vfmsub231pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pdz256m_vfmsub231pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PDZ256m + %ymm0 = VFMSUB231PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231psz128m_vfmsub231psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231psz128m_vfmsub231psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PSZ128m + %xmm0 = VFMSUB231PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231psz256m_vfmsub231psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231psz256m_vfmsub231psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PSZ256m + %ymm0 = VFMSUB231PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pdz128m_vfmsubadd132pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pdz128m_vfmsubadd132pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PDZ128m + %xmm0 = VFMSUBADD132PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pdz256m_vfmsubadd132pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pdz256m_vfmsubadd132pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PDZ256m + %ymm0 = VFMSUBADD132PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd132psz128m_vfmsubadd132psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132psz128m_vfmsubadd132psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PSZ128m + %xmm0 = VFMSUBADD132PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd132psz256m_vfmsubadd132psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132psz256m_vfmsubadd132psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PSZ256m + %ymm0 = VFMSUBADD132PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pdz128m_vfmsubadd213pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pdz128m_vfmsubadd213pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PDZ128m + %xmm0 = VFMSUBADD213PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pdz256m_vfmsubadd213pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pdz256m_vfmsubadd213pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PDZ256m + %ymm0 = VFMSUBADD213PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd213psz128m_vfmsubadd213psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213psz128m_vfmsubadd213psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PSZ128m + %xmm0 = VFMSUBADD213PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd213psz256m_vfmsubadd213psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213psz256m_vfmsubadd213psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PSZ256m + %ymm0 = VFMSUBADD213PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pdz128m_vfmsubadd231pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pdz128m_vfmsubadd231pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PDZ128m + %xmm0 = VFMSUBADD231PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pdz256m_vfmsubadd231pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pdz256m_vfmsubadd231pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PDZ256m + %ymm0 = VFMSUBADD231PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd231psz128m_vfmsubadd231psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231psz128m_vfmsubadd231psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PSZ128m + %xmm0 = VFMSUBADD231PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd231psz256m_vfmsubadd231psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231psz256m_vfmsubadd231psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PSZ256m + %ymm0 = VFMSUBADD231PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132pdz128m_vfnmadd132pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pdz128m_vfnmadd132pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PDZ128m + %xmm0 = VFNMADD132PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132pdz256m_vfnmadd132pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pdz256m_vfnmadd132pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PDZ256m + %ymm0 = VFNMADD132PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132psz128m_vfnmadd132psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132psz128m_vfnmadd132psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PSZ128m + %xmm0 = VFNMADD132PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132psz256m_vfnmadd132psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132psz256m_vfnmadd132psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PSZ256m + %ymm0 = VFNMADD132PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213pdz128m_vfnmadd213pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pdz128m_vfnmadd213pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PDZ128m + %xmm0 = VFNMADD213PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213pdz256m_vfnmadd213pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pdz256m_vfnmadd213pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PDZ256m + %ymm0 = VFNMADD213PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213psz128m_vfnmadd213psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213psz128m_vfnmadd213psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PSZ128m + %xmm0 = VFNMADD213PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213psz256m_vfnmadd213psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213psz256m_vfnmadd213psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PSZ256m + %ymm0 = VFNMADD213PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231pdz128m_vfnmadd231pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pdz128m_vfnmadd231pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PDZ128m + %xmm0 = VFNMADD231PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231pdz256m_vfnmadd231pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pdz256m_vfnmadd231pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PDZ256m + %ymm0 = VFNMADD231PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231psz128m_vfnmadd231psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231psz128m_vfnmadd231psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PSZ128m + %xmm0 = VFNMADD231PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231psz256m_vfnmadd231psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231psz256m_vfnmadd231psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PSZ256m + %ymm0 = VFNMADD231PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132pdz128m_vfnmsub132pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pdz128m_vfnmsub132pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PDZ128m + %xmm0 = VFNMSUB132PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132pdz256m_vfnmsub132pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pdz256m_vfnmsub132pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PDZ256m + %ymm0 = VFNMSUB132PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132psz128m_vfnmsub132psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132psz128m_vfnmsub132psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PSZ128m + %xmm0 = VFNMSUB132PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132psz256m_vfnmsub132psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132psz256m_vfnmsub132psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PSZ256m + %ymm0 = VFNMSUB132PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213pdz128m_vfnmsub213pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pdz128m_vfnmsub213pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PDZ128m + %xmm0 = VFNMSUB213PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213pdz256m_vfnmsub213pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pdz256m_vfnmsub213pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PDZ256m + %ymm0 = VFNMSUB213PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213psz128m_vfnmsub213psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213psz128m_vfnmsub213psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PSZ128m + %xmm0 = VFNMSUB213PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213psz256m_vfnmsub213psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213psz256m_vfnmsub213psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PSZ256m + %ymm0 = VFNMSUB213PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231pdz128m_vfnmsub231pdz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pdz128m_vfnmsub231pdz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PDZ128m + %xmm0 = VFNMSUB231PDZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231pdz256m_vfnmsub231pdz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pdz256m_vfnmsub231pdz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PDZ256m + %ymm0 = VFNMSUB231PDZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231psz128m_vfnmsub231psz128r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231psz128m_vfnmsub231psz128r_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PSZ128m + %xmm0 = VFNMSUB231PSZ128r undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231psz256m_vfnmsub231psz256r_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231psz256m_vfnmsub231psz256r_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PSZ256m + %ymm0 = VFNMSUB231PSZ256r undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vgetexppdz128mk_vgetexppdz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetexppdz128mk_vgetexppdz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDZ128mk + %xmm0 = VGETEXPPDZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vgetexppdz256mk_vgetexppdz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vgetexppdz256mk_vgetexppdz256rk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPDZ256mk + %ymm0 = VGETEXPPDZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vgetexppsz128mk_vgetexppsz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetexppsz128mk_vgetexppsz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSZ128mk + %xmm0 = VGETEXPPSZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vgetexppsz256mk_vgetexppsz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vgetexppsz256mk_vgetexppsz256rk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETEXPPSZ256mk + %ymm0 = VGETEXPPSZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vgetmantpdz128rmik_vgetmantpdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdz128rmik_vgetmantpdz128rrik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZ128rmik + %xmm0 = VGETMANTPDZ128rrik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpdz256rmik_vgetmantpdz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantpdz256rmik_vgetmantpdz256rrik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPDZ256rmik + %ymm0 = VGETMANTPDZ256rrik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpsz128rmik_vgetmantpsz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantpsz128rmik_vgetmantpsz128rrik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZ128rmik + %xmm0 = VGETMANTPSZ128rrik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vgetmantpsz256rmik_vgetmantpsz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vgetmantpsz256rmik_vgetmantpsz256rrik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VGETMANTPSZ256rmik + %ymm0 = VGETMANTPSZ256rrik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vinsertf32x4z256rmkz_vinsertf32x4z256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinsertf32x4z256rmkz_vinsertf32x4z256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF32x4Z256rmkz + %ymm0 = VINSERTF32x4Z256rrkz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vinserti32x4z256rmkz_vinserti32x4z256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vinserti32x4z256rmkz_vinserti32x4z256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI32x4Z256rmkz + %ymm0 = VINSERTI32x4Z256rrkz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vmaxcpdz128rmkz_vmaxcpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdz128rmkz_vmaxcpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZ128rmkz + %xmm0 = VMAXCPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxcpdz256rmkz_vmaxcpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdz256rmkz_vmaxcpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZ256rmkz + %ymm0 = VMAXCPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxcpsz128rmkz_vmaxcpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpsz128rmkz_vmaxcpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZ128rmkz + %xmm0 = VMAXCPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxcpsz256rmkz_vmaxcpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxcpsz256rmkz_vmaxcpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZ256rmkz + %ymm0 = VMAXCPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxpdz128rmkz_vmaxpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpdz128rmkz_vmaxpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPDZ128rmkz + %xmm0 = VMAXPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxpdz256rmkz_vmaxpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpdz256rmkz_vmaxpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPDZ256rmkz + %ymm0 = VMAXPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxpsz128rmkz_vmaxpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpsz128rmkz_vmaxpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPSZ128rmkz + %xmm0 = VMAXPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmaxpsz256rmkz_vmaxpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmaxpsz256rmkz_vmaxpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPSZ256rmkz + %ymm0 = VMAXPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vmincpdz128rmkz_vmincpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpdz128rmkz_vmincpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZ128rmkz + %xmm0 = VMINCPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmincpdz256rmkz_vmincpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmincpdz256rmkz_vmincpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZ256rmkz + %ymm0 = VMINCPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vmincpsz128rmkz_vmincpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmincpsz128rmkz_vmincpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZ128rmkz + %xmm0 = VMINCPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmincpsz256rmkz_vmincpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmincpsz256rmkz_vmincpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZ256rmkz + %ymm0 = VMINCPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vminpdz128rmkz_vminpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminpdz128rmkz_vminpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPDZ128rmkz + %xmm0 = VMINPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vminpdz256rmkz_vminpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vminpdz256rmkz_vminpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPDZ256rmkz + %ymm0 = VMINPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vminpsz128rmkz_vminpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vminpsz128rmkz_vminpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPSZ128rmkz + %xmm0 = VMINPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vminpsz256rmkz_vminpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vminpsz256rmkz_vminpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPSZ256rmkz + %ymm0 = VMINPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vmovapdz128rmk_vmovapdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovapdz128rmk_vmovapdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPDZ128rmk + %xmm0 = VMOVAPDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovapdz256rmk_vmovapdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovapdz256rmk_vmovapdz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPDZ256rmk + %ymm0 = VMOVAPDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovapsz128rmk_vmovapsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovapsz128rmk_vmovapsz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPSZ128rmk + %xmm0 = VMOVAPSZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovapsz256rmk_vmovapsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovapsz256rmk_vmovapsz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVAPSZ256rmk + %ymm0 = VMOVAPSZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovddupz128rmk_vmovddupz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovddupz128rmk_vmovddupz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDDUPZ128rmk + %xmm0 = VMOVDDUPZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovddupz256rmk_vmovddupz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovddupz256rmk_vmovddupz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDDUPZ256rmk + %ymm0 = VMOVDDUPZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqa32z128rmk_vmovdqa32z128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqa32z128rmk_vmovdqa32z128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA32Z128rmk + %xmm0 = VMOVDQA32Z128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqa32z256rmk_vmovdqa32z256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqa32z256rmk_vmovdqa32z256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA32Z256rmk + %ymm0 = VMOVDQA32Z256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqa64z128rmk_vmovdqa64z128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqa64z128rmk_vmovdqa64z128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA64Z128rmk + %xmm0 = VMOVDQA64Z128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqa64z256rmk_vmovdqa64z256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqa64z256rmk_vmovdqa64z256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQA64Z256rmk + %ymm0 = VMOVDQA64Z256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqu32z128rmk_vmovdqu32z128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu32z128rmk_vmovdqu32z128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU32Z128rmk + %xmm0 = VMOVDQU32Z128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqu32z256rmk_vmovdqu32z256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu32z256rmk_vmovdqu32z256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU32Z256rmk + %ymm0 = VMOVDQU32Z256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqu64z128rmk_vmovdqu64z128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu64z128rmk_vmovdqu64z128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU64Z128rmk + %xmm0 = VMOVDQU64Z128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovdqu64z256rmk_vmovdqu64z256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovdqu64z256rmk_vmovdqu64z256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVDQU64Z256rmk + %ymm0 = VMOVDQU64Z256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovshdupz128rmk_vmovshdupz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovshdupz128rmk_vmovshdupz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSHDUPZ128rmk + %xmm0 = VMOVSHDUPZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovshdupz256rmk_vmovshdupz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovshdupz256rmk_vmovshdupz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSHDUPZ256rmk + %ymm0 = VMOVSHDUPZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovsldupz128rmk_vmovsldupz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovsldupz128rmk_vmovsldupz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSLDUPZ128rmk + %xmm0 = VMOVSLDUPZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovsldupz256rmk_vmovsldupz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovsldupz256rmk_vmovsldupz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVSLDUPZ256rmk + %ymm0 = VMOVSLDUPZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovupdz128rmk_vmovupdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovupdz128rmk_vmovupdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPDZ128rmk + %xmm0 = VMOVUPDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovupdz256rmk_vmovupdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovupdz256rmk_vmovupdz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPDZ256rmk + %ymm0 = VMOVUPDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovupsz128rmk_vmovupsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmovupsz128rmk_vmovupsz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPSZ128rmk + %xmm0 = VMOVUPSZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmovupsz256rmk_vmovupsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmovupsz256rmk_vmovupsz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMOVUPSZ256rmk + %ymm0 = VMOVUPSZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vmulpdz128rmkz_vmulpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulpdz128rmkz_vmulpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPDZ128rmkz + %xmm0 = VMULPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmulpdz256rmkz_vmulpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmulpdz256rmkz_vmulpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPDZ256rmkz + %ymm0 = VMULPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vmulpsz128rmkz_vmulpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vmulpsz128rmkz_vmulpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPSZ128rmkz + %xmm0 = VMULPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vmulpsz256rmkz_vmulpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vmulpsz256rmkz_vmulpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPSZ256rmkz + %ymm0 = VMULPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpabsdz128rmk_vpabsdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpabsdz128rmk_vpabsdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSDZ128rmk + %xmm0 = VPABSDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpabsdz256rmk_vpabsdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpabsdz256rmk_vpabsdz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSDZ256rmk + %ymm0 = VPABSDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpabsqz128rmk_vpabsqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpabsqz128rmk_vpabsqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSQZ128rmk + %xmm0 = VPABSQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpabsqz256rmk_vpabsqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpabsqz256rmk_vpabsqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPABSQZ256rmk + %ymm0 = VPABSQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpadddz128rmkz_vpadddz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpadddz128rmkz_vpadddz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDDZ128rmkz + %xmm0 = VPADDDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpadddz256rmkz_vpadddz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpadddz256rmkz_vpadddz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDDZ256rmkz + %ymm0 = VPADDDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddqz128rmkz_vpaddqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpaddqz128rmkz_vpaddqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDQZ128rmkz + %xmm0 = VPADDQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpaddqz256rmkz_vpaddqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpaddqz256rmkz_vpaddqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDQZ256rmkz + %ymm0 = VPADDQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpanddz128rmkz_vpanddz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpanddz128rmkz_vpanddz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDDZ128rmkz + %xmm0 = VPANDDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpanddz256rmkz_vpanddz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpanddz256rmkz_vpanddz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDDZ256rmkz + %ymm0 = VPANDDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpandndz128rmkz_vpandndz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpandndz128rmkz_vpandndz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNDZ128rmkz + %xmm0 = VPANDNDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpandndz256rmkz_vpandndz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpandndz256rmkz_vpandndz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNDZ256rmkz + %ymm0 = VPANDNDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpandnqz128rmkz_vpandnqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpandnqz128rmkz_vpandnqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNQZ128rmkz + %xmm0 = VPANDNQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpandnqz256rmkz_vpandnqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpandnqz256rmkz_vpandnqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNQZ256rmkz + %ymm0 = VPANDNQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpandqz128rmkz_vpandqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpandqz128rmkz_vpandqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDQZ128rmkz + %xmm0 = VPANDQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpandqz256rmkz_vpandqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpandqz256rmkz_vpandqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDQZ256rmkz + %ymm0 = VPANDQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmdz128rmk_vpblendmdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmdz128rmk_vpblendmdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMDZ128rmk + %xmm0 = VPBLENDMDZ128rrk undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmdz128rmkz_vpblendmdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmdz128rmkz_vpblendmdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMDZ128rmkz + %xmm0 = VPBLENDMDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmdz256rmk_vpblendmdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmdz256rmk_vpblendmdz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMDZ256rmk + %ymm0 = VPBLENDMDZ256rrk undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmdz256rmkz_vpblendmdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmdz256rmkz_vpblendmdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMDZ256rmkz + %ymm0 = VPBLENDMDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmqz128rmk_vpblendmqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmqz128rmk_vpblendmqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMQZ128rmk + %xmm0 = VPBLENDMQZ128rrk undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmqz128rmkz_vpblendmqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmqz128rmkz_vpblendmqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMQZ128rmkz + %xmm0 = VPBLENDMQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmqz256rmk_vpblendmqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmqz256rmk_vpblendmqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMQZ256rmk + %ymm0 = VPBLENDMQZ256rrk undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpblendmqz256rmkz_vpblendmqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpblendmqz256rmkz_vpblendmqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBLENDMQZ256rmkz + %ymm0 = VPBLENDMQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastdz128mk_vpbroadcastdz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastdz128mk_vpbroadcastdz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTDZ128mk + %xmm0 = VPBROADCASTDZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastdz256mk_vpbroadcastdz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastdz256mk_vpbroadcastdz256rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTDZ256mk + %ymm0 = VPBROADCASTDZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastqz128mk_vpbroadcastqz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastqz128mk_vpbroadcastqz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTQZ128mk + %xmm0 = VPBROADCASTQZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpbroadcastqz256mk_vpbroadcastqz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpbroadcastqz256mk_vpbroadcastqz256rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPBROADCASTQZ256mk + %ymm0 = VPBROADCASTQZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpcmpdz128rmik_vpcmpdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdz128rmik_vpcmpdz128rrik_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZ128rmik + %k1 = VPCMPDZ128rrik undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpdz128rmik_alt_vpcmpdz128rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdz128rmik_alt_vpcmpdz128rrik_alt_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZ128rmik_alt + %k1 = VPCMPDZ128rrik_alt undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpdz256rmik_vpcmpdz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdz256rmik_vpcmpdz256rrik_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZ256rmik + %k1 = VPCMPDZ256rrik undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpdz256rmik_alt_vpcmpdz256rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpdz256rmik_alt_vpcmpdz256rrik_alt_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPDZ256rmik_alt + %k1 = VPCMPDZ256rrik_alt undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpeqdz128rmk_vpcmpeqdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqdz128rmk_vpcmpeqdz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQDZ128rmk + %k1 = VPCMPEQDZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpeqdz256rmk_vpcmpeqdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqdz256rmk_vpcmpeqdz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQDZ256rmk + %k1 = VPCMPEQDZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpeqqz128rmk_vpcmpeqqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqqz128rmk_vpcmpeqqz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQQZ128rmk + %k1 = VPCMPEQQZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpeqqz256rmk_vpcmpeqqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpeqqz256rmk_vpcmpeqqz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPEQQZ256rmk + %k1 = VPCMPEQQZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtdz128rmk_vpcmpgtdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtdz128rmk_vpcmpgtdz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTDZ128rmk + %k1 = VPCMPGTDZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtdz256rmk_vpcmpgtdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtdz256rmk_vpcmpgtdz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTDZ256rmk + %k1 = VPCMPGTDZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtqz128rmk_vpcmpgtqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtqz128rmk_vpcmpgtqz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTQZ128rmk + %k1 = VPCMPGTQZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpgtqz256rmk_vpcmpgtqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpgtqz256rmk_vpcmpgtqz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPGTQZ256rmk + %k1 = VPCMPGTQZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vpcmpqz128rmik_vpcmpqz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqz128rmik_vpcmpqz128rrik_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZ128rmik + %k1 = VPCMPQZ128rrik undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpqz128rmik_alt_vpcmpqz128rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqz128rmik_alt_vpcmpqz128rrik_alt_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZ128rmik_alt + %k1 = VPCMPQZ128rrik_alt undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpqz256rmik_vpcmpqz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqz256rmik_vpcmpqz256rrik_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZ256rmik + %k1 = VPCMPQZ256rrik undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpqz256rmik_alt_vpcmpqz256rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpqz256rmik_alt_vpcmpqz256rrik_alt_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPQZ256rmik_alt + %k1 = VPCMPQZ256rrik_alt undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudz128rmik_vpcmpudz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudz128rmik_vpcmpudz128rrik_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZ128rmik + %k1 = VPCMPUDZ128rrik undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudz128rmik_alt_vpcmpudz128rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudz128rmik_alt_vpcmpudz128rrik_alt_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZ128rmik_alt + %k1 = VPCMPUDZ128rrik_alt undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudz256rmik_vpcmpudz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudz256rmik_vpcmpudz256rrik_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZ256rmik + %k1 = VPCMPUDZ256rrik undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpudz256rmik_alt_vpcmpudz256rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpudz256rmik_alt_vpcmpudz256rrik_alt_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUDZ256rmik_alt + %k1 = VPCMPUDZ256rrik_alt undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqz128rmik_vpcmpuqz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqz128rmik_vpcmpuqz128rrik_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZ128rmik + %k1 = VPCMPUQZ128rrik undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqz128rmik_alt_vpcmpuqz128rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqz128rmik_alt_vpcmpuqz128rrik_alt_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZ128rmik_alt + %k1 = VPCMPUQZ128rrik_alt undef %k2, undef %xmm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqz256rmik_vpcmpuqz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqz256rmik_vpcmpuqz256rrik_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZ256rmik + %k1 = VPCMPUQZ256rrik undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpcmpuqz256rmik_alt_vpcmpuqz256rrik_alt_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vpcmpuqz256rmik_alt_vpcmpuqz256rrik_alt_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMPUQZ256rmik_alt + %k1 = VPCMPUQZ256rrik_alt undef %k2, undef %ymm0, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermdz256rmkz_vpermdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermdz256rmkz_vpermdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMDZ256rmkz + %ymm0 = VPERMDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpermi2d128rm_vpermi2d128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2d128rm_vpermi2d128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2D128rm + %xmm0 = VPERMI2D128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2d256rm_vpermi2d256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2d256rm_vpermi2d256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2D256rm + %ymm0 = VPERMI2D256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2pd128rm_vpermi2pd128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2pd128rm_vpermi2pd128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PD128rm + %xmm0 = VPERMI2PD128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2pd256rm_vpermi2pd256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2pd256rm_vpermi2pd256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PD256rm + %ymm0 = VPERMI2PD256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2ps128rm_vpermi2ps128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2ps128rm_vpermi2ps128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PS128rm + %xmm0 = VPERMI2PS128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2ps256rm_vpermi2ps256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2ps256rm_vpermi2ps256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PS256rm + %ymm0 = VPERMI2PS256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2q128rm_vpermi2q128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2q128rm_vpermi2q128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Q128rm + %xmm0 = VPERMI2Q128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermi2q256rm_vpermi2q256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2q256rm_vpermi2q256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Q256rm + %ymm0 = VPERMI2Q256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpermilpdz128mik_vpermilpdz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz128mik_vpermilpdz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ128mik + %xmm0 = VPERMILPDZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermilpdz128rmkz_vpermilpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz128rmkz_vpermilpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ128rmkz + %xmm0 = VPERMILPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpermilpdz256mik_vpermilpdz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz256mik_vpermilpdz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ256mik + %ymm0 = VPERMILPDZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermilpdz256rmkz_vpermilpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz256rmkz_vpermilpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ256rmkz + %ymm0 = VPERMILPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpermilpsz128mik_vpermilpsz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz128mik_vpermilpsz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ128mik + %xmm0 = VPERMILPSZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermilpsz128rmkz_vpermilpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz128rmkz_vpermilpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ128rmkz + %xmm0 = VPERMILPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpermilpsz256mik_vpermilpsz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz256mik_vpermilpsz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ256mik + %ymm0 = VPERMILPSZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermilpsz256rmkz_vpermilpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz256rmkz_vpermilpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ256rmkz + %ymm0 = VPERMILPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpermpdz256mik_vpermpdz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermpdz256mik_vpermpdz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZ256mik + %ymm0 = VPERMPDZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermpdz256rmkz_vpermpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermpdz256rmkz_vpermpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZ256rmkz + %ymm0 = VPERMPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpermpsz256rmkz_vpermpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermpsz256rmkz_vpermpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPSZ256rmkz + %ymm0 = VPERMPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpermqz256mik_vpermqz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermqz256mik_vpermqz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZ256mik + %ymm0 = VPERMQZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermqz256rmkz_vpermqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermqz256rmkz_vpermqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZ256rmkz + %ymm0 = VPERMQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpermt2d128rm_vpermt2d128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2d128rm_vpermt2d128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2D128rm + %xmm0 = VPERMT2D128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2d256rm_vpermt2d256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2d256rm_vpermt2d256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2D256rm + %ymm0 = VPERMT2D256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2pd128rm_vpermt2pd128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2pd128rm_vpermt2pd128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PD128rm + %xmm0 = VPERMT2PD128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2pd256rm_vpermt2pd256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2pd256rm_vpermt2pd256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PD256rm + %ymm0 = VPERMT2PD256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2ps128rm_vpermt2ps128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2ps128rm_vpermt2ps128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PS128rm + %xmm0 = VPERMT2PS128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2ps256rm_vpermt2ps256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2ps256rm_vpermt2ps256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PS256rm + %ymm0 = VPERMT2PS256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2q128rm_vpermt2q128rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2q128rm_vpermt2q128rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Q128rm + %xmm0 = VPERMT2Q128rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermt2q256rm_vpermt2q256rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2q256rm_vpermt2q256rr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Q256rm + %ymm0 = VPERMT2Q256rr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpexpanddz128rmk_vpexpanddz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpexpanddz128rmk_vpexpanddz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDDZ128rmk + %xmm0 = VPEXPANDDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpexpanddz256rmk_vpexpanddz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpexpanddz256rmk_vpexpanddz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDDZ256rmk + %ymm0 = VPEXPANDDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpexpandqz128rmk_vpexpandqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpexpandqz128rmk_vpexpandqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDQZ128rmk + %xmm0 = VPEXPANDQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpexpandqz256rmk_vpexpandqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpexpandqz256rmk_vpexpandqz256rrk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPEXPANDQZ256rmk + %ymm0 = VPEXPANDQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxsdz128rmkz_vpmaxsdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsdz128rmkz_vpmaxsdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSDZ128rmkz + %xmm0 = VPMAXSDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxsdz256rmkz_vpmaxsdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsdz256rmkz_vpmaxsdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSDZ256rmkz + %ymm0 = VPMAXSDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxsqz128rmkz_vpmaxsqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsqz128rmkz_vpmaxsqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSQZ128rmkz + %xmm0 = VPMAXSQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxsqz256rmkz_vpmaxsqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxsqz256rmkz_vpmaxsqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSQZ256rmkz + %ymm0 = VPMAXSQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxudz128rmkz_vpmaxudz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxudz128rmkz_vpmaxudz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUDZ128rmkz + %xmm0 = VPMAXUDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxudz256rmkz_vpmaxudz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxudz256rmkz_vpmaxudz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUDZ256rmkz + %ymm0 = VPMAXUDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxuqz128rmkz_vpmaxuqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuqz128rmkz_vpmaxuqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUQZ128rmkz + %xmm0 = VPMAXUQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmaxuqz256rmkz_vpmaxuqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmaxuqz256rmkz_vpmaxuqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUQZ256rmkz + %ymm0 = VPMAXUQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpminsdz128rmkz_vpminsdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsdz128rmkz_vpminsdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSDZ128rmkz + %xmm0 = VPMINSDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminsdz256rmkz_vpminsdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminsdz256rmkz_vpminsdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSDZ256rmkz + %ymm0 = VPMINSDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpminsqz128rmkz_vpminsqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminsqz128rmkz_vpminsqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSQZ128rmkz + %xmm0 = VPMINSQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminsqz256rmkz_vpminsqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminsqz256rmkz_vpminsqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSQZ256rmkz + %ymm0 = VPMINSQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpminudz128rmkz_vpminudz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminudz128rmkz_vpminudz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUDZ128rmkz + %xmm0 = VPMINUDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminudz256rmkz_vpminudz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminudz256rmkz_vpminudz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUDZ256rmkz + %ymm0 = VPMINUDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpminuqz128rmkz_vpminuqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpminuqz128rmkz_vpminuqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUQZ128rmkz + %xmm0 = VPMINUQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpminuqz256rmkz_vpminuqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpminuqz256rmkz_vpminuqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUQZ256rmkz + %ymm0 = VPMINUQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxbdz128rmk_vpmovsxbdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbdz128rmk_vpmovsxbdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBDZ128rmk + %xmm0 = VPMOVSXBDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxbdz256rmk_vpmovsxbdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbdz256rmk_vpmovsxbdz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBDZ256rmk + %ymm0 = VPMOVSXBDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxbqz128rmk_vpmovsxbqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbqz128rmk_vpmovsxbqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBQZ128rmk + %xmm0 = VPMOVSXBQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxbqz256rmk_vpmovsxbqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxbqz256rmk_vpmovsxbqz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXBQZ256rmk + %ymm0 = VPMOVSXBQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxdqz128rmk_vpmovsxdqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxdqz128rmk_vpmovsxdqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXDQZ128rmk + %xmm0 = VPMOVSXDQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxdqz256rmk_vpmovsxdqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxdqz256rmk_vpmovsxdqz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXDQZ256rmk + %ymm0 = VPMOVSXDQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxwdz128rmk_vpmovsxwdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwdz128rmk_vpmovsxwdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWDZ128rmk + %xmm0 = VPMOVSXWDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxwdz256rmk_vpmovsxwdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwdz256rmk_vpmovsxwdz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWDZ256rmk + %ymm0 = VPMOVSXWDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxwqz128rmk_vpmovsxwqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwqz128rmk_vpmovsxwqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWQZ128rmk + %xmm0 = VPMOVSXWQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovsxwqz256rmk_vpmovsxwqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovsxwqz256rmk_vpmovsxwqz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVSXWQZ256rmk + %ymm0 = VPMOVSXWQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxbdz128rmk_vpmovzxbdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbdz128rmk_vpmovzxbdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBDZ128rmk + %xmm0 = VPMOVZXBDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxbdz256rmk_vpmovzxbdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbdz256rmk_vpmovzxbdz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBDZ256rmk + %ymm0 = VPMOVZXBDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxbqz128rmk_vpmovzxbqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbqz128rmk_vpmovzxbqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBQZ128rmk + %xmm0 = VPMOVZXBQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxbqz256rmk_vpmovzxbqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxbqz256rmk_vpmovzxbqz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXBQZ256rmk + %ymm0 = VPMOVZXBQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxdqz128rmk_vpmovzxdqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxdqz128rmk_vpmovzxdqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXDQZ128rmk + %xmm0 = VPMOVZXDQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxdqz256rmk_vpmovzxdqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxdqz256rmk_vpmovzxdqz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXDQZ256rmk + %ymm0 = VPMOVZXDQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxwdz128rmk_vpmovzxwdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwdz128rmk_vpmovzxwdz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWDZ128rmk + %xmm0 = VPMOVZXWDZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxwdz256rmk_vpmovzxwdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwdz256rmk_vpmovzxwdz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWDZ256rmk + %ymm0 = VPMOVZXWDZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxwqz128rmk_vpmovzxwqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwqz128rmk_vpmovzxwqz128rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWQZ128rmk + %xmm0 = VPMOVZXWQZ128rrk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmovzxwqz256rmk_vpmovzxwqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmovzxwqz256rmk_vpmovzxwqz256rrk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMOVZXWQZ256rmk + %ymm0 = VPMOVZXWQZ256rrk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vpmuldqz128rmkz_vpmuldqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmuldqz128rmkz_vpmuldqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULDQZ128rmkz + %xmm0 = VPMULDQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmuldqz256rmkz_vpmuldqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmuldqz256rmkz_vpmuldqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULDQZ256rmkz + %ymm0 = VPMULDQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmulldz128rmkz_vpmulldz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmulldz128rmkz_vpmulldz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLDZ128rmkz + %xmm0 = VPMULLDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmulldz256rmkz_vpmulldz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmulldz256rmkz_vpmulldz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLDZ256rmkz + %ymm0 = VPMULLDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpmuludqz128rmkz_vpmuludqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmuludqz128rmkz_vpmuludqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULUDQZ128rmkz + %xmm0 = VPMULUDQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpmuludqz256rmkz_vpmuludqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpmuludqz256rmkz_vpmuludqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULUDQZ256rmkz + %ymm0 = VPMULUDQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpordz128rmkz_vpordz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpordz128rmkz_vpordz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORDZ128rmkz + %xmm0 = VPORDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpordz256rmkz_vpordz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpordz256rmkz_vpordz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORDZ256rmkz + %ymm0 = VPORDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vporqz128rmkz_vporqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vporqz128rmkz_vporqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORQZ128rmkz + %xmm0 = VPORQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vporqz256rmkz_vporqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vporqz256rmkz_vporqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORQZ256rmkz + %ymm0 = VPORQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vproldz128mik_vproldz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vproldz128mik_vproldz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLDZ128mik + %xmm0 = VPROLDZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vproldz256mik_vproldz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vproldz256mik_vproldz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLDZ256mik + %ymm0 = VPROLDZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vprolqz128mik_vprolqz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprolqz128mik_vprolqz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLQZ128mik + %xmm0 = VPROLQZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vprolqz256mik_vprolqz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vprolqz256mik_vprolqz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLQZ256mik + %ymm0 = VPROLQZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vprolvdz128rmkz_vprolvdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprolvdz128rmkz_vprolvdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVDZ128rmkz + %xmm0 = VPROLVDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vprolvdz256rmkz_vprolvdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vprolvdz256rmkz_vprolvdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVDZ256rmkz + %ymm0 = VPROLVDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vprolvqz128rmkz_vprolvqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprolvqz128rmkz_vprolvqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVQZ128rmkz + %xmm0 = VPROLVQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vprolvqz256rmkz_vprolvqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vprolvqz256rmkz_vprolvqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVQZ256rmkz + %ymm0 = VPROLVQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vprordz128mik_vprordz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprordz128mik_vprordz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORDZ128mik + %xmm0 = VPRORDZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vprordz256mik_vprordz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vprordz256mik_vprordz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORDZ256mik + %ymm0 = VPRORDZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vprorqz128mik_vprorqz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprorqz128mik_vprorqz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORQZ128mik + %xmm0 = VPRORQZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vprorqz256mik_vprorqz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vprorqz256mik_vprorqz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORQZ256mik + %ymm0 = VPRORQZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vprorvdz128rmkz_vprorvdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprorvdz128rmkz_vprorvdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVDZ128rmkz + %xmm0 = VPRORVDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vprorvdz256rmkz_vprorvdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vprorvdz256rmkz_vprorvdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVDZ256rmkz + %ymm0 = VPRORVDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vprorvqz128rmkz_vprorvqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprorvqz128rmkz_vprorvqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVQZ128rmkz + %xmm0 = VPRORVQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vprorvqz256rmkz_vprorvqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vprorvqz256rmkz_vprorvqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVQZ256rmkz + %ymm0 = VPRORVQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpshufdz128mik_vpshufdz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshufdz128mik_vpshufdz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFDZ128mik + %xmm0 = VPSHUFDZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpshufdz256mik_vpshufdz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpshufdz256mik_vpshufdz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHUFDZ256mik + %ymm0 = VPSHUFDZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpslldz128mik_vpslldz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpslldz128mik_vpslldz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ128mik + %xmm0 = VPSLLDZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpslldz128rmkz_vpslldz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpslldz128rmkz_vpslldz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ128rmkz + %xmm0 = VPSLLDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpslldz256mik_vpslldz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpslldz256mik_vpslldz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ256mik + %ymm0 = VPSLLDZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpslldz256rmkz_vpslldz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpslldz256rmkz_vpslldz256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ256rmkz + %ymm0 = VPSLLDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllqz128mik_vpsllqz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllqz128mik_vpsllqz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ128mik + %xmm0 = VPSLLQZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsllqz128rmkz_vpsllqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllqz128rmkz_vpsllqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ128rmkz + %xmm0 = VPSLLQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllqz256mik_vpsllqz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsllqz256mik_vpsllqz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ256mik + %ymm0 = VPSLLQZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsllqz256rmkz_vpsllqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllqz256rmkz_vpsllqz256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ256rmkz + %ymm0 = VPSLLQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllvdz128rmkz_vpsllvdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvdz128rmkz_vpsllvdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVDZ128rmkz + %xmm0 = VPSLLVDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllvdz256rmkz_vpsllvdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvdz256rmkz_vpsllvdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVDZ256rmkz + %ymm0 = VPSLLVDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllvqz128rmkz_vpsllvqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvqz128rmkz_vpsllvqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVQZ128rmkz + %xmm0 = VPSLLVQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsllvqz256rmkz_vpsllvqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsllvqz256rmkz_vpsllvqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVQZ256rmkz + %ymm0 = VPSLLVQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsradz128mik_vpsradz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsradz128mik_vpsradz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ128mik + %xmm0 = VPSRADZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsradz128rmkz_vpsradz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsradz128rmkz_vpsradz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ128rmkz + %xmm0 = VPSRADZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsradz256mik_vpsradz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsradz256mik_vpsradz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ256mik + %ymm0 = VPSRADZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsradz256rmkz_vpsradz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsradz256rmkz_vpsradz256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ256rmkz + %ymm0 = VPSRADZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsraqz128mik_vpsraqz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsraqz128mik_vpsraqz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ128mik + %xmm0 = VPSRAQZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsraqz128rmkz_vpsraqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsraqz128rmkz_vpsraqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ128rmkz + %xmm0 = VPSRAQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsraqz256mik_vpsraqz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsraqz256mik_vpsraqz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ256mik + %ymm0 = VPSRAQZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsraqz256rmkz_vpsraqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsraqz256rmkz_vpsraqz256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ256rmkz + %ymm0 = VPSRAQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsravdz128rmkz_vpsravdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravdz128rmkz_vpsravdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVDZ128rmkz + %xmm0 = VPSRAVDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsravdz256rmkz_vpsravdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsravdz256rmkz_vpsravdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVDZ256rmkz + %ymm0 = VPSRAVDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsravqz128rmkz_vpsravqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsravqz128rmkz_vpsravqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVQZ128rmkz + %xmm0 = VPSRAVQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsravqz256rmkz_vpsravqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsravqz256rmkz_vpsravqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVQZ256rmkz + %ymm0 = VPSRAVQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrldz128mik_vpsrldz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrldz128mik_vpsrldz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ128mik + %xmm0 = VPSRLDZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrldz128rmkz_vpsrldz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrldz128rmkz_vpsrldz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ128rmkz + %xmm0 = VPSRLDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrldz256mik_vpsrldz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrldz256mik_vpsrldz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ256mik + %ymm0 = VPSRLDZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrldz256rmkz_vpsrldz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrldz256rmkz_vpsrldz256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ256rmkz + %ymm0 = VPSRLDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlqz128mik_vpsrlqz128rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz128mik_vpsrlqz128rik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ128mik + %xmm0 = VPSRLQZ128rik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrlqz128rmkz_vpsrlqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz128rmkz_vpsrlqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ128rmkz + %xmm0 = VPSRLQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlqz256mik_vpsrlqz256rik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz256mik_vpsrlqz256rik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ256mik + %ymm0 = VPSRLQZ256rik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vpsrlqz256rmkz_vpsrlqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz256rmkz_vpsrlqz256rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ256rmkz + %ymm0 = VPSRLQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlvdz128rmkz_vpsrlvdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvdz128rmkz_vpsrlvdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVDZ128rmkz + %xmm0 = VPSRLVDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlvdz256rmkz_vpsrlvdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvdz256rmkz_vpsrlvdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVDZ256rmkz + %ymm0 = VPSRLVDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlvqz128rmkz_vpsrlvqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvqz128rmkz_vpsrlvqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVQZ128rmkz + %xmm0 = VPSRLVQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsrlvqz256rmkz_vpsrlvqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsrlvqz256rmkz_vpsrlvqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVQZ256rmkz + %ymm0 = VPSRLVQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubdz128rmkz_vpsubdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubdz128rmkz_vpsubdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBDZ128rmkz + %xmm0 = VPSUBDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubdz256rmkz_vpsubdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubdz256rmkz_vpsubdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBDZ256rmkz + %ymm0 = VPSUBDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubqz128rmkz_vpsubqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpsubqz128rmkz_vpsubqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBQZ128rmkz + %xmm0 = VPSUBQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpsubqz256rmkz_vpsubqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpsubqz256rmkz_vpsubqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBQZ256rmkz + %ymm0 = VPSUBQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpternlogdz128rmi_vpternlogdz128rri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogdz128rmi_vpternlogdz128rri_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGDZ128rmi + %xmm0 = VPTERNLOGDZ128rri undef %xmm1, undef %xmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vpternlogdz256rmi_vpternlogdz256rri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogdz256rmi_vpternlogdz256rri_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGDZ256rmi + %ymm0 = VPTERNLOGDZ256rri undef %ymm1, undef %ymm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vpternlogqz128rmi_vpternlogqz128rri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogqz128rmi_vpternlogqz128rri_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGQZ128rmi + %xmm0 = VPTERNLOGQZ128rri undef %xmm1, undef %xmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vpternlogqz256rmi_vpternlogqz256rri_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogqz256rmi_vpternlogqz256rri_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGQZ256rmi + %ymm0 = VPTERNLOGQZ256rri undef %ymm1, undef %ymm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vptestmdz128rmk_vptestmdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmdz128rmk_vptestmdz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMDZ128rmk + %k1 = VPTESTMDZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestmdz256rmk_vptestmdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestmdz256rmk_vptestmdz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMDZ256rmk + %k1 = VPTESTMDZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vptestmqz128rmk_vptestmqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestmqz128rmk_vptestmqz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMQZ128rmk + %k1 = VPTESTMQZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestmqz256rmk_vptestmqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestmqz256rmk_vptestmqz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTMQZ256rmk + %k1 = VPTESTMQZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmdz128rmk_vptestnmdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmdz128rmk_vptestnmdz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMDZ128rmk + %k1 = VPTESTNMDZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmdz256rmk_vptestnmdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmdz256rmk_vptestnmdz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMDZ256rmk + %k1 = VPTESTNMDZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmqz128rmk_vptestnmqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmqz128rmk_vptestnmqz128rrk_test + %3 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMQZ128rmk + %k1 = VPTESTNMQZ128rrk undef %k2, undef %xmm0, %3 + RET 0 +... +--- +name: stack_fold_vptestnmqz256rmk_vptestnmqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm1', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vptestnmqz256rmk_vptestnmqz256rrk_test + %3 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTESTNMQZ256rmk + %k1 = VPTESTNMQZ256rrk undef %k2, undef %ymm0, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhdqz128rmkz_vpunpckhdqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhdqz128rmkz_vpunpckhdqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHDQZ128rmkz + %xmm0 = VPUNPCKHDQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhdqz256rmkz_vpunpckhdqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhdqz256rmkz_vpunpckhdqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHDQZ256rmkz + %ymm0 = VPUNPCKHDQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhqdqz128rmkz_vpunpckhqdqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhqdqz128rmkz_vpunpckhqdqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHQDQZ128rmkz + %xmm0 = VPUNPCKHQDQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckhqdqz256rmkz_vpunpckhqdqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckhqdqz256rmkz_vpunpckhqdqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHQDQZ256rmkz + %ymm0 = VPUNPCKHQDQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckldqz128rmkz_vpunpckldqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckldqz128rmkz_vpunpckldqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLDQZ128rmkz + %xmm0 = VPUNPCKLDQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpckldqz256rmkz_vpunpckldqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpckldqz256rmkz_vpunpckldqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLDQZ256rmkz + %ymm0 = VPUNPCKLDQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpcklqdqz128rmkz_vpunpcklqdqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklqdqz128rmkz_vpunpcklqdqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLQDQZ128rmkz + %xmm0 = VPUNPCKLQDQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpunpcklqdqz256rmkz_vpunpcklqdqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpunpcklqdqz256rmkz_vpunpcklqdqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLQDQZ256rmkz + %ymm0 = VPUNPCKLQDQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpxordz128rmkz_vpxordz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpxordz128rmkz_vpxordz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORDZ128rmkz + %xmm0 = VPXORDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpxordz256rmkz_vpxordz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpxordz256rmkz_vpxordz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORDZ256rmkz + %ymm0 = VPXORDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vpxorqz128rmkz_vpxorqz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpxorqz128rmkz_vpxorqz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORQZ128rmkz + %xmm0 = VPXORQZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vpxorqz256rmkz_vpxorqz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpxorqz256rmkz_vpxorqz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORQZ256rmkz + %ymm0 = VPXORQZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vrcp14pdz128mk_vrcp14pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp14pdz128mk_vrcp14pdz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PDZ128mk + %xmm0 = VRCP14PDZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrcp14pdz256mk_vrcp14pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vrcp14pdz256mk_vrcp14pdz256rk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PDZ256mk + %ymm0 = VRCP14PDZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrcp14psz128mk_vrcp14psz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrcp14psz128mk_vrcp14psz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PSZ128mk + %xmm0 = VRCP14PSZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrcp14psz256mk_vrcp14psz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vrcp14psz256mk_vrcp14psz256rk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCP14PSZ256mk + %ymm0 = VRCP14PSZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrndscalepdz128rmik_vrndscalepdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdz128rmik_vrndscalepdz128rrik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZ128rmik + %xmm0 = VRNDSCALEPDZ128rrik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepdz256rmik_vrndscalepdz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalepdz256rmik_vrndscalepdz256rrik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPDZ256rmik + %ymm0 = VRNDSCALEPDZ256rrik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepsz128rmik_vrndscalepsz128rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalepsz128rmik_vrndscalepsz128rrik_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZ128rmik + %xmm0 = VRNDSCALEPSZ128rrik undef %xmm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrndscalepsz256rmik_vrndscalepsz256rrik_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vrndscalepsz256rmik_vrndscalepsz256rrik_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRNDSCALEPSZ256rmik + %ymm0 = VRNDSCALEPSZ256rrik undef %ymm1, undef %k1, %3, 0 + RET 0 +... +--- +name: stack_fold_vrsqrt14pdz128mk_vrsqrt14pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pdz128mk_vrsqrt14pdz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PDZ128mk + %xmm0 = VRSQRT14PDZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrsqrt14pdz256mk_vrsqrt14pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14pdz256mk_vrsqrt14pdz256rk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PDZ256mk + %ymm0 = VRSQRT14PDZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrsqrt14psz128mk_vrsqrt14psz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14psz128mk_vrsqrt14psz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PSZ128mk + %xmm0 = VRSQRT14PSZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vrsqrt14psz256mk_vrsqrt14psz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrt14psz256mk_vrsqrt14psz256rk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRT14PSZ256mk + %ymm0 = VRSQRT14PSZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vscalefpdz128rmkz_vscalefpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpdz128rmkz_vscalefpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPDZ128rmkz + %xmm0 = VSCALEFPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vscalefpdz256rmkz_vscalefpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpdz256rmkz_vscalefpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPDZ256rmkz + %ymm0 = VSCALEFPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vscalefpsz128rmkz_vscalefpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpsz128rmkz_vscalefpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPSZ128rmkz + %xmm0 = VSCALEFPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vscalefpsz256rmkz_vscalefpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vscalefpsz256rmkz_vscalefpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPSZ256rmkz + %ymm0 = VSCALEFPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vshuff32x4z256rmikz_vshuff32x4z256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshuff32x4z256rmikz_vshuff32x4z256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF32X4Z256rmikz + %ymm0 = VSHUFF32X4Z256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshuff64x2z256rmikz_vshuff64x2z256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshuff64x2z256rmikz_vshuff64x2z256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF64X2Z256rmikz + %ymm0 = VSHUFF64X2Z256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshufi32x4z256rmikz_vshufi32x4z256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshufi32x4z256rmikz_vshufi32x4z256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI32X4Z256rmikz + %ymm0 = VSHUFI32X4Z256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshufi64x2z256rmikz_vshufi64x2z256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshufi64x2z256rmikz_vshufi64x2z256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI64X2Z256rmikz + %ymm0 = VSHUFI64X2Z256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshufpdz128rmikz_vshufpdz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vshufpdz128rmikz_vshufpdz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPDZ128rmikz + %xmm0 = VSHUFPDZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshufpdz256rmikz_vshufpdz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshufpdz256rmikz_vshufpdz256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPDZ256rmikz + %ymm0 = VSHUFPDZ256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshufpsz128rmikz_vshufpsz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vshufpsz128rmikz_vshufpsz128rrikz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPSZ128rmikz + %xmm0 = VSHUFPSZ128rrikz undef %k1, undef %xmm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vshufpsz256rmikz_vshufpsz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vshufpsz256rmikz_vshufpsz256rrikz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPSZ256rmikz + %ymm0 = VSHUFPSZ256rrikz undef %k1, undef %ymm1, %3, 0 + RET 0 +... +--- +name: stack_fold_vsqrtpdz128mk_vsqrtpdz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsqrtpdz128mk_vsqrtpdz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPDZ128mk + %xmm0 = VSQRTPDZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vsqrtpdz256mk_vsqrtpdz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vsqrtpdz256mk_vsqrtpdz256rk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPDZ256mk + %ymm0 = VSQRTPDZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vsqrtpsz128mk_vsqrtpsz128rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsqrtpsz128mk_vsqrtpsz128rk_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPSZ128mk + %xmm0 = VSQRTPSZ128rk undef %xmm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vsqrtpsz256mk_vsqrtpsz256rk_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vsqrtpsz256mk_vsqrtpsz256rk_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSQRTPSZ256mk + %ymm0 = VSQRTPSZ256rk undef %ymm1, undef %k1, %3 + RET 0 +... +--- +name: stack_fold_vsubpdz128rmkz_vsubpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubpdz128rmkz_vsubpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPDZ128rmkz + %xmm0 = VSUBPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vsubpdz256rmkz_vsubpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vsubpdz256rmkz_vsubpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPDZ256rmkz + %ymm0 = VSUBPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vsubpsz128rmkz_vsubpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vsubpsz128rmkz_vsubpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPSZ128rmkz + %xmm0 = VSUBPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vsubpsz256rmkz_vsubpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vsubpsz256rmkz_vsubpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPSZ256rmkz + %ymm0 = VSUBPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vunpckhpdz128rmkz_vunpckhpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpdz128rmkz_vunpckhpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPDZ128rmkz + %xmm0 = VUNPCKHPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vunpckhpdz256rmkz_vunpckhpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpdz256rmkz_vunpckhpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPDZ256rmkz + %ymm0 = VUNPCKHPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vunpckhpsz128rmkz_vunpckhpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpsz128rmkz_vunpckhpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPSZ128rmkz + %xmm0 = VUNPCKHPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vunpckhpsz256rmkz_vunpckhpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpckhpsz256rmkz_vunpckhpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPSZ256rmkz + %ymm0 = VUNPCKHPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vunpcklpdz128rmkz_vunpcklpdz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpdz128rmkz_vunpcklpdz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPDZ128rmkz + %xmm0 = VUNPCKLPDZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vunpcklpdz256rmkz_vunpcklpdz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpdz256rmkz_vunpcklpdz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPDZ256rmkz + %ymm0 = VUNPCKLPDZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vunpcklpsz128rmkz_vunpcklpsz128rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128x } +liveins: + - { reg: '%xmm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpsz128rmkz_vunpcklpsz128rrkz_test + %3 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPSZ128rmkz + %xmm0 = VUNPCKLPSZ128rrkz undef %k1, undef %xmm1, %3 + RET 0 +... +--- +name: stack_fold_vunpcklpsz256rmkz_vunpcklpsz256rrkz_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256x } +liveins: + - { reg: '%ymm2', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vunpcklpsz256rmkz_vunpcklpsz256rrkz_test + %3 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPSZ256rmkz + %ymm0 = VUNPCKLPSZ256rrkz undef %k1, undef %ymm1, %3 + RET 0 +... +--- +name: stack_fold_vaddpdz128rmk_vaddpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vaddpdz128rmk_vaddpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPDZ128rmk + %xmm0 = VADDPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vaddpdz256rmk_vaddpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vaddpdz256rmk_vaddpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPDZ256rmk + %ymm0 = VADDPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vaddpsz128rmk_vaddpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vaddpsz128rmk_vaddpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPSZ128rmk + %xmm0 = VADDPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vaddpsz256rmk_vaddpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vaddpsz256rmk_vaddpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VADDPSZ256rmk + %ymm0 = VADDPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_valigndz128rmik_valigndz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_valigndz128rmik_valigndz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNDZ128rmik + %xmm0 = VALIGNDZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_valigndz256rmik_valigndz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_valigndz256rmik_valigndz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNDZ256rmik + %ymm0 = VALIGNDZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_valignqz128rmik_valignqz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_valignqz128rmik_valignqz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNQZ128rmik + %xmm0 = VALIGNQZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_valignqz256rmik_valignqz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_valignqz256rmik_valignqz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VALIGNQZ256rmik + %ymm0 = VALIGNQZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vdivpdz128rmk_vdivpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vdivpdz128rmk_vdivpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPDZ128rmk + %xmm0 = VDIVPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vdivpdz256rmk_vdivpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vdivpdz256rmk_vdivpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPDZ256rmk + %ymm0 = VDIVPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vdivpsz128rmk_vdivpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vdivpsz128rmk_vdivpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPSZ128rmk + %xmm0 = VDIVPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vdivpsz256rmk_vdivpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vdivpsz256rmk_vdivpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VDIVPSZ256rmk + %ymm0 = VDIVPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfixupimmpdz128rmik_vfixupimmpdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdz128rmik_vfixupimmpdz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZ128rmik + %xmm0 = VFIXUPIMMPDZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpdz128rmikz_vfixupimmpdz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdz128rmikz_vfixupimmpdz128rrikz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZ128rmikz + %xmm0 = VFIXUPIMMPDZ128rrikz undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpdz256rmik_vfixupimmpdz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdz256rmik_vfixupimmpdz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZ256rmik + %ymm0 = VFIXUPIMMPDZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpdz256rmikz_vfixupimmpdz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpdz256rmikz_vfixupimmpdz256rrikz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPDZ256rmikz + %ymm0 = VFIXUPIMMPDZ256rrikz undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpsz128rmik_vfixupimmpsz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpsz128rmik_vfixupimmpsz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZ128rmik + %xmm0 = VFIXUPIMMPSZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpsz128rmikz_vfixupimmpsz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpsz128rmikz_vfixupimmpsz128rrikz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZ128rmikz + %xmm0 = VFIXUPIMMPSZ128rrikz undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpsz256rmik_vfixupimmpsz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpsz256rmik_vfixupimmpsz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZ256rmik + %ymm0 = VFIXUPIMMPSZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfixupimmpsz256rmikz_vfixupimmpsz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfixupimmpsz256rmikz_vfixupimmpsz256rrikz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFIXUPIMMPSZ256rmikz + %ymm0 = VFIXUPIMMPSZ256rrikz undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vfmadd132pdz128mk_vfmadd132pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pdz128mk_vfmadd132pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PDZ128mk + %xmm0 = VFMADD132PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132pdz128mkz_vfmadd132pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pdz128mkz_vfmadd132pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PDZ128mkz + %xmm0 = VFMADD132PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132pdz256mk_vfmadd132pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pdz256mk_vfmadd132pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PDZ256mk + %ymm0 = VFMADD132PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132pdz256mkz_vfmadd132pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pdz256mkz_vfmadd132pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PDZ256mkz + %ymm0 = VFMADD132PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132psz128mk_vfmadd132psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132psz128mk_vfmadd132psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PSZ128mk + %xmm0 = VFMADD132PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132psz128mkz_vfmadd132psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132psz128mkz_vfmadd132psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PSZ128mkz + %xmm0 = VFMADD132PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132psz256mk_vfmadd132psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132psz256mk_vfmadd132psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PSZ256mk + %ymm0 = VFMADD132PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd132psz256mkz_vfmadd132psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132psz256mkz_vfmadd132psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PSZ256mkz + %ymm0 = VFMADD132PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213pdz128mk_vfmadd213pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pdz128mk_vfmadd213pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PDZ128mk + %xmm0 = VFMADD213PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213pdz128mkz_vfmadd213pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pdz128mkz_vfmadd213pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PDZ128mkz + %xmm0 = VFMADD213PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213pdz256mk_vfmadd213pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pdz256mk_vfmadd213pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PDZ256mk + %ymm0 = VFMADD213PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213pdz256mkz_vfmadd213pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pdz256mkz_vfmadd213pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PDZ256mkz + %ymm0 = VFMADD213PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213psz128mk_vfmadd213psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213psz128mk_vfmadd213psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PSZ128mk + %xmm0 = VFMADD213PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213psz128mkz_vfmadd213psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213psz128mkz_vfmadd213psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PSZ128mkz + %xmm0 = VFMADD213PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213psz256mk_vfmadd213psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213psz256mk_vfmadd213psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PSZ256mk + %ymm0 = VFMADD213PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd213psz256mkz_vfmadd213psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213psz256mkz_vfmadd213psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PSZ256mkz + %ymm0 = VFMADD213PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231pdz128mk_vfmadd231pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pdz128mk_vfmadd231pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PDZ128mk + %xmm0 = VFMADD231PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231pdz128mkz_vfmadd231pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pdz128mkz_vfmadd231pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PDZ128mkz + %xmm0 = VFMADD231PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231pdz256mk_vfmadd231pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pdz256mk_vfmadd231pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PDZ256mk + %ymm0 = VFMADD231PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231pdz256mkz_vfmadd231pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pdz256mkz_vfmadd231pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PDZ256mkz + %ymm0 = VFMADD231PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231psz128mk_vfmadd231psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231psz128mk_vfmadd231psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PSZ128mk + %xmm0 = VFMADD231PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231psz128mkz_vfmadd231psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231psz128mkz_vfmadd231psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PSZ128mkz + %xmm0 = VFMADD231PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231psz256mk_vfmadd231psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231psz256mk_vfmadd231psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PSZ256mk + %ymm0 = VFMADD231PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmadd231psz256mkz_vfmadd231psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231psz256mkz_vfmadd231psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PSZ256mkz + %ymm0 = VFMADD231PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pdz128mk_vfmaddsub132pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pdz128mk_vfmaddsub132pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PDZ128mk + %xmm0 = VFMADDSUB132PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pdz128mkz_vfmaddsub132pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pdz128mkz_vfmaddsub132pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PDZ128mkz + %xmm0 = VFMADDSUB132PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pdz256mk_vfmaddsub132pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pdz256mk_vfmaddsub132pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PDZ256mk + %ymm0 = VFMADDSUB132PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pdz256mkz_vfmaddsub132pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pdz256mkz_vfmaddsub132pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PDZ256mkz + %ymm0 = VFMADDSUB132PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132psz128mk_vfmaddsub132psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132psz128mk_vfmaddsub132psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PSZ128mk + %xmm0 = VFMADDSUB132PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132psz128mkz_vfmaddsub132psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132psz128mkz_vfmaddsub132psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PSZ128mkz + %xmm0 = VFMADDSUB132PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132psz256mk_vfmaddsub132psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132psz256mk_vfmaddsub132psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PSZ256mk + %ymm0 = VFMADDSUB132PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub132psz256mkz_vfmaddsub132psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132psz256mkz_vfmaddsub132psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PSZ256mkz + %ymm0 = VFMADDSUB132PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pdz128mk_vfmaddsub213pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pdz128mk_vfmaddsub213pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PDZ128mk + %xmm0 = VFMADDSUB213PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pdz128mkz_vfmaddsub213pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pdz128mkz_vfmaddsub213pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PDZ128mkz + %xmm0 = VFMADDSUB213PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pdz256mk_vfmaddsub213pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pdz256mk_vfmaddsub213pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PDZ256mk + %ymm0 = VFMADDSUB213PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pdz256mkz_vfmaddsub213pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pdz256mkz_vfmaddsub213pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PDZ256mkz + %ymm0 = VFMADDSUB213PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213psz128mk_vfmaddsub213psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213psz128mk_vfmaddsub213psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PSZ128mk + %xmm0 = VFMADDSUB213PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213psz128mkz_vfmaddsub213psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213psz128mkz_vfmaddsub213psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PSZ128mkz + %xmm0 = VFMADDSUB213PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213psz256mk_vfmaddsub213psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213psz256mk_vfmaddsub213psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PSZ256mk + %ymm0 = VFMADDSUB213PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub213psz256mkz_vfmaddsub213psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213psz256mkz_vfmaddsub213psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PSZ256mkz + %ymm0 = VFMADDSUB213PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pdz128mk_vfmaddsub231pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pdz128mk_vfmaddsub231pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PDZ128mk + %xmm0 = VFMADDSUB231PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pdz128mkz_vfmaddsub231pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pdz128mkz_vfmaddsub231pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PDZ128mkz + %xmm0 = VFMADDSUB231PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pdz256mk_vfmaddsub231pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pdz256mk_vfmaddsub231pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PDZ256mk + %ymm0 = VFMADDSUB231PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pdz256mkz_vfmaddsub231pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pdz256mkz_vfmaddsub231pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PDZ256mkz + %ymm0 = VFMADDSUB231PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231psz128mk_vfmaddsub231psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231psz128mk_vfmaddsub231psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PSZ128mk + %xmm0 = VFMADDSUB231PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231psz128mkz_vfmaddsub231psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231psz128mkz_vfmaddsub231psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PSZ128mkz + %xmm0 = VFMADDSUB231PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231psz256mk_vfmaddsub231psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231psz256mk_vfmaddsub231psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PSZ256mk + %ymm0 = VFMADDSUB231PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmaddsub231psz256mkz_vfmaddsub231psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231psz256mkz_vfmaddsub231psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PSZ256mkz + %ymm0 = VFMADDSUB231PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132pdz128mk_vfmsub132pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pdz128mk_vfmsub132pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PDZ128mk + %xmm0 = VFMSUB132PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132pdz128mkz_vfmsub132pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pdz128mkz_vfmsub132pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PDZ128mkz + %xmm0 = VFMSUB132PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132pdz256mk_vfmsub132pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pdz256mk_vfmsub132pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PDZ256mk + %ymm0 = VFMSUB132PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132pdz256mkz_vfmsub132pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pdz256mkz_vfmsub132pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PDZ256mkz + %ymm0 = VFMSUB132PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132psz128mk_vfmsub132psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132psz128mk_vfmsub132psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PSZ128mk + %xmm0 = VFMSUB132PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132psz128mkz_vfmsub132psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132psz128mkz_vfmsub132psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PSZ128mkz + %xmm0 = VFMSUB132PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132psz256mk_vfmsub132psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132psz256mk_vfmsub132psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PSZ256mk + %ymm0 = VFMSUB132PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub132psz256mkz_vfmsub132psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132psz256mkz_vfmsub132psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PSZ256mkz + %ymm0 = VFMSUB132PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213pdz128mk_vfmsub213pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pdz128mk_vfmsub213pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PDZ128mk + %xmm0 = VFMSUB213PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213pdz128mkz_vfmsub213pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pdz128mkz_vfmsub213pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PDZ128mkz + %xmm0 = VFMSUB213PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213pdz256mk_vfmsub213pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pdz256mk_vfmsub213pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PDZ256mk + %ymm0 = VFMSUB213PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213pdz256mkz_vfmsub213pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pdz256mkz_vfmsub213pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PDZ256mkz + %ymm0 = VFMSUB213PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213psz128mk_vfmsub213psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213psz128mk_vfmsub213psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PSZ128mk + %xmm0 = VFMSUB213PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213psz128mkz_vfmsub213psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213psz128mkz_vfmsub213psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PSZ128mkz + %xmm0 = VFMSUB213PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213psz256mk_vfmsub213psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213psz256mk_vfmsub213psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PSZ256mk + %ymm0 = VFMSUB213PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub213psz256mkz_vfmsub213psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213psz256mkz_vfmsub213psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PSZ256mkz + %ymm0 = VFMSUB213PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231pdz128mk_vfmsub231pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pdz128mk_vfmsub231pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PDZ128mk + %xmm0 = VFMSUB231PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231pdz128mkz_vfmsub231pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pdz128mkz_vfmsub231pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PDZ128mkz + %xmm0 = VFMSUB231PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231pdz256mk_vfmsub231pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pdz256mk_vfmsub231pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PDZ256mk + %ymm0 = VFMSUB231PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231pdz256mkz_vfmsub231pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pdz256mkz_vfmsub231pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PDZ256mkz + %ymm0 = VFMSUB231PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231psz128mk_vfmsub231psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231psz128mk_vfmsub231psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PSZ128mk + %xmm0 = VFMSUB231PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231psz128mkz_vfmsub231psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231psz128mkz_vfmsub231psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PSZ128mkz + %xmm0 = VFMSUB231PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231psz256mk_vfmsub231psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231psz256mk_vfmsub231psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PSZ256mk + %ymm0 = VFMSUB231PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsub231psz256mkz_vfmsub231psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231psz256mkz_vfmsub231psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PSZ256mkz + %ymm0 = VFMSUB231PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pdz128mk_vfmsubadd132pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pdz128mk_vfmsubadd132pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PDZ128mk + %xmm0 = VFMSUBADD132PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pdz128mkz_vfmsubadd132pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pdz128mkz_vfmsubadd132pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PDZ128mkz + %xmm0 = VFMSUBADD132PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pdz256mk_vfmsubadd132pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pdz256mk_vfmsubadd132pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PDZ256mk + %ymm0 = VFMSUBADD132PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pdz256mkz_vfmsubadd132pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pdz256mkz_vfmsubadd132pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PDZ256mkz + %ymm0 = VFMSUBADD132PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132psz128mk_vfmsubadd132psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132psz128mk_vfmsubadd132psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PSZ128mk + %xmm0 = VFMSUBADD132PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132psz128mkz_vfmsubadd132psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132psz128mkz_vfmsubadd132psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PSZ128mkz + %xmm0 = VFMSUBADD132PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132psz256mk_vfmsubadd132psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132psz256mk_vfmsubadd132psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PSZ256mk + %ymm0 = VFMSUBADD132PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd132psz256mkz_vfmsubadd132psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132psz256mkz_vfmsubadd132psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PSZ256mkz + %ymm0 = VFMSUBADD132PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pdz128mk_vfmsubadd213pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pdz128mk_vfmsubadd213pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PDZ128mk + %xmm0 = VFMSUBADD213PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pdz128mkz_vfmsubadd213pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pdz128mkz_vfmsubadd213pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PDZ128mkz + %xmm0 = VFMSUBADD213PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pdz256mk_vfmsubadd213pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pdz256mk_vfmsubadd213pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PDZ256mk + %ymm0 = VFMSUBADD213PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pdz256mkz_vfmsubadd213pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pdz256mkz_vfmsubadd213pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PDZ256mkz + %ymm0 = VFMSUBADD213PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213psz128mk_vfmsubadd213psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213psz128mk_vfmsubadd213psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PSZ128mk + %xmm0 = VFMSUBADD213PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213psz128mkz_vfmsubadd213psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213psz128mkz_vfmsubadd213psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PSZ128mkz + %xmm0 = VFMSUBADD213PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213psz256mk_vfmsubadd213psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213psz256mk_vfmsubadd213psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PSZ256mk + %ymm0 = VFMSUBADD213PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd213psz256mkz_vfmsubadd213psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213psz256mkz_vfmsubadd213psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PSZ256mkz + %ymm0 = VFMSUBADD213PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pdz128mk_vfmsubadd231pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pdz128mk_vfmsubadd231pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PDZ128mk + %xmm0 = VFMSUBADD231PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pdz128mkz_vfmsubadd231pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pdz128mkz_vfmsubadd231pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PDZ128mkz + %xmm0 = VFMSUBADD231PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pdz256mk_vfmsubadd231pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pdz256mk_vfmsubadd231pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PDZ256mk + %ymm0 = VFMSUBADD231PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pdz256mkz_vfmsubadd231pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pdz256mkz_vfmsubadd231pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PDZ256mkz + %ymm0 = VFMSUBADD231PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231psz128mk_vfmsubadd231psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231psz128mk_vfmsubadd231psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PSZ128mk + %xmm0 = VFMSUBADD231PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231psz128mkz_vfmsubadd231psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231psz128mkz_vfmsubadd231psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PSZ128mkz + %xmm0 = VFMSUBADD231PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231psz256mk_vfmsubadd231psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231psz256mk_vfmsubadd231psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PSZ256mk + %ymm0 = VFMSUBADD231PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfmsubadd231psz256mkz_vfmsubadd231psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231psz256mkz_vfmsubadd231psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PSZ256mkz + %ymm0 = VFMSUBADD231PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132pdz128mk_vfnmadd132pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pdz128mk_vfnmadd132pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PDZ128mk + %xmm0 = VFNMADD132PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132pdz128mkz_vfnmadd132pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pdz128mkz_vfnmadd132pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PDZ128mkz + %xmm0 = VFNMADD132PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132pdz256mk_vfnmadd132pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pdz256mk_vfnmadd132pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PDZ256mk + %ymm0 = VFNMADD132PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132pdz256mkz_vfnmadd132pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pdz256mkz_vfnmadd132pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PDZ256mkz + %ymm0 = VFNMADD132PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132psz128mk_vfnmadd132psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132psz128mk_vfnmadd132psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PSZ128mk + %xmm0 = VFNMADD132PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132psz128mkz_vfnmadd132psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132psz128mkz_vfnmadd132psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PSZ128mkz + %xmm0 = VFNMADD132PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132psz256mk_vfnmadd132psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132psz256mk_vfnmadd132psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PSZ256mk + %ymm0 = VFNMADD132PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd132psz256mkz_vfnmadd132psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132psz256mkz_vfnmadd132psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PSZ256mkz + %ymm0 = VFNMADD132PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213pdz128mk_vfnmadd213pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pdz128mk_vfnmadd213pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PDZ128mk + %xmm0 = VFNMADD213PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213pdz128mkz_vfnmadd213pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pdz128mkz_vfnmadd213pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PDZ128mkz + %xmm0 = VFNMADD213PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213pdz256mk_vfnmadd213pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pdz256mk_vfnmadd213pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PDZ256mk + %ymm0 = VFNMADD213PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213pdz256mkz_vfnmadd213pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pdz256mkz_vfnmadd213pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PDZ256mkz + %ymm0 = VFNMADD213PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213psz128mk_vfnmadd213psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213psz128mk_vfnmadd213psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PSZ128mk + %xmm0 = VFNMADD213PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213psz128mkz_vfnmadd213psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213psz128mkz_vfnmadd213psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PSZ128mkz + %xmm0 = VFNMADD213PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213psz256mk_vfnmadd213psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213psz256mk_vfnmadd213psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PSZ256mk + %ymm0 = VFNMADD213PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd213psz256mkz_vfnmadd213psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213psz256mkz_vfnmadd213psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PSZ256mkz + %ymm0 = VFNMADD213PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231pdz128mk_vfnmadd231pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pdz128mk_vfnmadd231pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PDZ128mk + %xmm0 = VFNMADD231PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231pdz128mkz_vfnmadd231pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pdz128mkz_vfnmadd231pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PDZ128mkz + %xmm0 = VFNMADD231PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231pdz256mk_vfnmadd231pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pdz256mk_vfnmadd231pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PDZ256mk + %ymm0 = VFNMADD231PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231pdz256mkz_vfnmadd231pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pdz256mkz_vfnmadd231pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PDZ256mkz + %ymm0 = VFNMADD231PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231psz128mk_vfnmadd231psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231psz128mk_vfnmadd231psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PSZ128mk + %xmm0 = VFNMADD231PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231psz128mkz_vfnmadd231psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231psz128mkz_vfnmadd231psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PSZ128mkz + %xmm0 = VFNMADD231PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231psz256mk_vfnmadd231psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231psz256mk_vfnmadd231psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PSZ256mk + %ymm0 = VFNMADD231PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmadd231psz256mkz_vfnmadd231psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231psz256mkz_vfnmadd231psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PSZ256mkz + %ymm0 = VFNMADD231PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132pdz128mk_vfnmsub132pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pdz128mk_vfnmsub132pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PDZ128mk + %xmm0 = VFNMSUB132PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132pdz128mkz_vfnmsub132pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pdz128mkz_vfnmsub132pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PDZ128mkz + %xmm0 = VFNMSUB132PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132pdz256mk_vfnmsub132pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pdz256mk_vfnmsub132pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PDZ256mk + %ymm0 = VFNMSUB132PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132pdz256mkz_vfnmsub132pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pdz256mkz_vfnmsub132pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PDZ256mkz + %ymm0 = VFNMSUB132PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132psz128mk_vfnmsub132psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132psz128mk_vfnmsub132psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PSZ128mk + %xmm0 = VFNMSUB132PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132psz128mkz_vfnmsub132psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132psz128mkz_vfnmsub132psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PSZ128mkz + %xmm0 = VFNMSUB132PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132psz256mk_vfnmsub132psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132psz256mk_vfnmsub132psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PSZ256mk + %ymm0 = VFNMSUB132PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub132psz256mkz_vfnmsub132psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132psz256mkz_vfnmsub132psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PSZ256mkz + %ymm0 = VFNMSUB132PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213pdz128mk_vfnmsub213pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pdz128mk_vfnmsub213pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PDZ128mk + %xmm0 = VFNMSUB213PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213pdz128mkz_vfnmsub213pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pdz128mkz_vfnmsub213pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PDZ128mkz + %xmm0 = VFNMSUB213PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213pdz256mk_vfnmsub213pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pdz256mk_vfnmsub213pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PDZ256mk + %ymm0 = VFNMSUB213PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213pdz256mkz_vfnmsub213pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pdz256mkz_vfnmsub213pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PDZ256mkz + %ymm0 = VFNMSUB213PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213psz128mk_vfnmsub213psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213psz128mk_vfnmsub213psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PSZ128mk + %xmm0 = VFNMSUB213PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213psz128mkz_vfnmsub213psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213psz128mkz_vfnmsub213psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PSZ128mkz + %xmm0 = VFNMSUB213PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213psz256mk_vfnmsub213psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213psz256mk_vfnmsub213psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PSZ256mk + %ymm0 = VFNMSUB213PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub213psz256mkz_vfnmsub213psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213psz256mkz_vfnmsub213psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PSZ256mkz + %ymm0 = VFNMSUB213PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231pdz128mk_vfnmsub231pdz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pdz128mk_vfnmsub231pdz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PDZ128mk + %xmm0 = VFNMSUB231PDZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231pdz128mkz_vfnmsub231pdz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pdz128mkz_vfnmsub231pdz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PDZ128mkz + %xmm0 = VFNMSUB231PDZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231pdz256mk_vfnmsub231pdz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pdz256mk_vfnmsub231pdz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PDZ256mk + %ymm0 = VFNMSUB231PDZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231pdz256mkz_vfnmsub231pdz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pdz256mkz_vfnmsub231pdz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PDZ256mkz + %ymm0 = VFNMSUB231PDZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231psz128mk_vfnmsub231psz128rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231psz128mk_vfnmsub231psz128rk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PSZ128mk + %xmm0 = VFNMSUB231PSZ128rk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231psz128mkz_vfnmsub231psz128rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231psz128mkz_vfnmsub231psz128rkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PSZ128mkz + %xmm0 = VFNMSUB231PSZ128rkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231psz256mk_vfnmsub231psz256rk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231psz256mk_vfnmsub231psz256rk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PSZ256mk + %ymm0 = VFNMSUB231PSZ256rk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vfnmsub231psz256mkz_vfnmsub231psz256rkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231psz256mkz_vfnmsub231psz256rkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PSZ256mkz + %ymm0 = VFNMSUB231PSZ256rkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vinsertf32x4z256rmk_vinsertf32x4z256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vinsertf32x4z256rmk_vinsertf32x4z256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTF32x4Z256rmk + %ymm0 = VINSERTF32x4Z256rrk undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vinserti32x4z256rmk_vinserti32x4z256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vinserti32x4z256rmk_vinserti32x4z256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VINSERTI32x4Z256rmk + %ymm0 = VINSERTI32x4Z256rrk undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vmaxcpdz128rmk_vmaxcpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdz128rmk_vmaxcpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZ128rmk + %xmm0 = VMAXCPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxcpdz256rmk_vmaxcpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vmaxcpdz256rmk_vmaxcpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPDZ256rmk + %ymm0 = VMAXCPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxcpsz128rmk_vmaxcpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxcpsz128rmk_vmaxcpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZ128rmk + %xmm0 = VMAXCPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxcpsz256rmk_vmaxcpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vmaxcpsz256rmk_vmaxcpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXCPSZ256rmk + %ymm0 = VMAXCPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxpdz128rmk_vmaxpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxpdz128rmk_vmaxpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPDZ128rmk + %xmm0 = VMAXPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxpdz256rmk_vmaxpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vmaxpdz256rmk_vmaxpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPDZ256rmk + %ymm0 = VMAXPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxpsz128rmk_vmaxpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmaxpsz128rmk_vmaxpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPSZ128rmk + %xmm0 = VMAXPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmaxpsz256rmk_vmaxpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vmaxpsz256rmk_vmaxpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMAXPSZ256rmk + %ymm0 = VMAXPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vmincpdz128rmk_vmincpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmincpdz128rmk_vmincpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZ128rmk + %xmm0 = VMINCPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmincpdz256rmk_vmincpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vmincpdz256rmk_vmincpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPDZ256rmk + %ymm0 = VMINCPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vmincpsz128rmk_vmincpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmincpsz128rmk_vmincpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZ128rmk + %xmm0 = VMINCPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmincpsz256rmk_vmincpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vmincpsz256rmk_vmincpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINCPSZ256rmk + %ymm0 = VMINCPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vminpdz128rmk_vminpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vminpdz128rmk_vminpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPDZ128rmk + %xmm0 = VMINPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vminpdz256rmk_vminpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vminpdz256rmk_vminpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPDZ256rmk + %ymm0 = VMINPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vminpsz128rmk_vminpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vminpsz128rmk_vminpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPSZ128rmk + %xmm0 = VMINPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vminpsz256rmk_vminpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vminpsz256rmk_vminpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMINPSZ256rmk + %ymm0 = VMINPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vmulpdz128rmk_vmulpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmulpdz128rmk_vmulpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPDZ128rmk + %xmm0 = VMULPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmulpdz256rmk_vmulpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vmulpdz256rmk_vmulpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPDZ256rmk + %ymm0 = VMULPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vmulpsz128rmk_vmulpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vmulpsz128rmk_vmulpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPSZ128rmk + %xmm0 = VMULPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vmulpsz256rmk_vmulpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vmulpsz256rmk_vmulpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VMULPSZ256rmk + %ymm0 = VMULPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpadddz128rmk_vpadddz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpadddz128rmk_vpadddz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDDZ128rmk + %xmm0 = VPADDDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpadddz256rmk_vpadddz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpadddz256rmk_vpadddz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDDZ256rmk + %ymm0 = VPADDDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddqz128rmk_vpaddqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpaddqz128rmk_vpaddqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDQZ128rmk + %xmm0 = VPADDQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpaddqz256rmk_vpaddqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpaddqz256rmk_vpaddqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPADDQZ256rmk + %ymm0 = VPADDQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpanddz128rmk_vpanddz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpanddz128rmk_vpanddz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDDZ128rmk + %xmm0 = VPANDDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpanddz256rmk_vpanddz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpanddz256rmk_vpanddz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDDZ256rmk + %ymm0 = VPANDDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpandndz128rmk_vpandndz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpandndz128rmk_vpandndz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNDZ128rmk + %xmm0 = VPANDNDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpandndz256rmk_vpandndz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpandndz256rmk_vpandndz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNDZ256rmk + %ymm0 = VPANDNDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpandnqz128rmk_vpandnqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpandnqz128rmk_vpandnqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNQZ128rmk + %xmm0 = VPANDNQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpandnqz256rmk_vpandnqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpandnqz256rmk_vpandnqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDNQZ256rmk + %ymm0 = VPANDNQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpandqz128rmk_vpandqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpandqz128rmk_vpandqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDQZ128rmk + %xmm0 = VPANDQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpandqz256rmk_vpandqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpandqz256rmk_vpandqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPANDQZ256rmk + %ymm0 = VPANDQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermdz256rmk_vpermdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermdz256rmk_vpermdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMDZ256rmk + %ymm0 = VPERMDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2d128rmk_vpermi2d128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2d128rmk_vpermi2d128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2D128rmk + %xmm0 = VPERMI2D128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2d128rmkz_vpermi2d128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2d128rmkz_vpermi2d128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2D128rmkz + %xmm0 = VPERMI2D128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2d256rmk_vpermi2d256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2d256rmk_vpermi2d256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2D256rmk + %ymm0 = VPERMI2D256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2d256rmkz_vpermi2d256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2d256rmkz_vpermi2d256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2D256rmkz + %ymm0 = VPERMI2D256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2pd128rmk_vpermi2pd128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2pd128rmk_vpermi2pd128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PD128rmk + %xmm0 = VPERMI2PD128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2pd128rmkz_vpermi2pd128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2pd128rmkz_vpermi2pd128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PD128rmkz + %xmm0 = VPERMI2PD128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2pd256rmk_vpermi2pd256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2pd256rmk_vpermi2pd256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PD256rmk + %ymm0 = VPERMI2PD256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2pd256rmkz_vpermi2pd256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2pd256rmkz_vpermi2pd256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PD256rmkz + %ymm0 = VPERMI2PD256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2ps128rmk_vpermi2ps128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2ps128rmk_vpermi2ps128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PS128rmk + %xmm0 = VPERMI2PS128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2ps128rmkz_vpermi2ps128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2ps128rmkz_vpermi2ps128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PS128rmkz + %xmm0 = VPERMI2PS128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2ps256rmk_vpermi2ps256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2ps256rmk_vpermi2ps256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PS256rmk + %ymm0 = VPERMI2PS256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2ps256rmkz_vpermi2ps256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2ps256rmkz_vpermi2ps256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2PS256rmkz + %ymm0 = VPERMI2PS256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2q128rmk_vpermi2q128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2q128rmk_vpermi2q128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Q128rmk + %xmm0 = VPERMI2Q128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2q128rmkz_vpermi2q128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2q128rmkz_vpermi2q128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Q128rmkz + %xmm0 = VPERMI2Q128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2q256rmk_vpermi2q256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2q256rmk_vpermi2q256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Q256rmk + %ymm0 = VPERMI2Q256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermi2q256rmkz_vpermi2q256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermi2q256rmkz_vpermi2q256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMI2Q256rmkz + %ymm0 = VPERMI2Q256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermilpdz128rmk_vpermilpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz128rmk_vpermilpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ128rmk + %xmm0 = VPERMILPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermilpdz256rmk_vpermilpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermilpdz256rmk_vpermilpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPDZ256rmk + %ymm0 = VPERMILPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermilpsz128rmk_vpermilpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz128rmk_vpermilpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ128rmk + %xmm0 = VPERMILPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermilpsz256rmk_vpermilpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermilpsz256rmk_vpermilpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMILPSZ256rmk + %ymm0 = VPERMILPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermpdz256rmk_vpermpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermpdz256rmk_vpermpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPDZ256rmk + %ymm0 = VPERMPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermpsz256rmk_vpermpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermpsz256rmk_vpermpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMPSZ256rmk + %ymm0 = VPERMPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermqz256rmk_vpermqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermqz256rmk_vpermqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMQZ256rmk + %ymm0 = VPERMQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2d128rmk_vpermt2d128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2d128rmk_vpermt2d128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2D128rmk + %xmm0 = VPERMT2D128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2d128rmkz_vpermt2d128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2d128rmkz_vpermt2d128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2D128rmkz + %xmm0 = VPERMT2D128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2d256rmk_vpermt2d256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2d256rmk_vpermt2d256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2D256rmk + %ymm0 = VPERMT2D256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2d256rmkz_vpermt2d256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2d256rmkz_vpermt2d256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2D256rmkz + %ymm0 = VPERMT2D256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2pd128rmk_vpermt2pd128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2pd128rmk_vpermt2pd128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PD128rmk + %xmm0 = VPERMT2PD128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2pd128rmkz_vpermt2pd128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2pd128rmkz_vpermt2pd128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PD128rmkz + %xmm0 = VPERMT2PD128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2pd256rmk_vpermt2pd256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2pd256rmk_vpermt2pd256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PD256rmk + %ymm0 = VPERMT2PD256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2pd256rmkz_vpermt2pd256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2pd256rmkz_vpermt2pd256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PD256rmkz + %ymm0 = VPERMT2PD256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2ps128rmk_vpermt2ps128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2ps128rmk_vpermt2ps128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PS128rmk + %xmm0 = VPERMT2PS128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2ps128rmkz_vpermt2ps128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2ps128rmkz_vpermt2ps128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PS128rmkz + %xmm0 = VPERMT2PS128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2ps256rmk_vpermt2ps256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2ps256rmk_vpermt2ps256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PS256rmk + %ymm0 = VPERMT2PS256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2ps256rmkz_vpermt2ps256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2ps256rmkz_vpermt2ps256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2PS256rmkz + %ymm0 = VPERMT2PS256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2q128rmk_vpermt2q128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2q128rmk_vpermt2q128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Q128rmk + %xmm0 = VPERMT2Q128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2q128rmkz_vpermt2q128rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2q128rmkz_vpermt2q128rrkz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Q128rmkz + %xmm0 = VPERMT2Q128rrkz undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2q256rmk_vpermt2q256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2q256rmk_vpermt2q256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Q256rmk + %ymm0 = VPERMT2Q256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpermt2q256rmkz_vpermt2q256rrkz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermt2q256rmkz_vpermt2q256rrkz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMT2Q256rmkz + %ymm0 = VPERMT2Q256rrkz undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxsdz128rmk_vpmaxsdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxsdz128rmk_vpmaxsdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSDZ128rmk + %xmm0 = VPMAXSDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxsdz256rmk_vpmaxsdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxsdz256rmk_vpmaxsdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSDZ256rmk + %ymm0 = VPMAXSDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxsqz128rmk_vpmaxsqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxsqz128rmk_vpmaxsqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSQZ128rmk + %xmm0 = VPMAXSQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxsqz256rmk_vpmaxsqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxsqz256rmk_vpmaxsqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXSQZ256rmk + %ymm0 = VPMAXSQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxudz128rmk_vpmaxudz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxudz128rmk_vpmaxudz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUDZ128rmk + %xmm0 = VPMAXUDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxudz256rmk_vpmaxudz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxudz256rmk_vpmaxudz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUDZ256rmk + %ymm0 = VPMAXUDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxuqz128rmk_vpmaxuqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxuqz128rmk_vpmaxuqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUQZ128rmk + %xmm0 = VPMAXUQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmaxuqz256rmk_vpmaxuqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmaxuqz256rmk_vpmaxuqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMAXUQZ256rmk + %ymm0 = VPMAXUQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpminsdz128rmk_vpminsdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpminsdz128rmk_vpminsdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSDZ128rmk + %xmm0 = VPMINSDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminsdz256rmk_vpminsdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpminsdz256rmk_vpminsdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSDZ256rmk + %ymm0 = VPMINSDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpminsqz128rmk_vpminsqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpminsqz128rmk_vpminsqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSQZ128rmk + %xmm0 = VPMINSQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminsqz256rmk_vpminsqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpminsqz256rmk_vpminsqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINSQZ256rmk + %ymm0 = VPMINSQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpminudz128rmk_vpminudz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpminudz128rmk_vpminudz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUDZ128rmk + %xmm0 = VPMINUDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminudz256rmk_vpminudz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpminudz256rmk_vpminudz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUDZ256rmk + %ymm0 = VPMINUDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpminuqz128rmk_vpminuqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpminuqz128rmk_vpminuqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUQZ128rmk + %xmm0 = VPMINUQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpminuqz256rmk_vpminuqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpminuqz256rmk_vpminuqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMINUQZ256rmk + %ymm0 = VPMINUQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmuldqz128rmk_vpmuldqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmuldqz128rmk_vpmuldqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULDQZ128rmk + %xmm0 = VPMULDQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmuldqz256rmk_vpmuldqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmuldqz256rmk_vpmuldqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULDQZ256rmk + %ymm0 = VPMULDQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulldz128rmk_vpmulldz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmulldz128rmk_vpmulldz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLDZ128rmk + %xmm0 = VPMULLDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmulldz256rmk_vpmulldz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmulldz256rmk_vpmulldz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULLDZ256rmk + %ymm0 = VPMULLDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpmuludqz128rmk_vpmuludqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpmuludqz128rmk_vpmuludqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULUDQZ128rmk + %xmm0 = VPMULUDQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpmuludqz256rmk_vpmuludqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpmuludqz256rmk_vpmuludqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMULUDQZ256rmk + %ymm0 = VPMULUDQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpordz128rmk_vpordz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpordz128rmk_vpordz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORDZ128rmk + %xmm0 = VPORDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpordz256rmk_vpordz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpordz256rmk_vpordz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORDZ256rmk + %ymm0 = VPORDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vporqz128rmk_vporqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vporqz128rmk_vporqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORQZ128rmk + %xmm0 = VPORQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vporqz256rmk_vporqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vporqz256rmk_vporqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPORQZ256rmk + %ymm0 = VPORQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vprolvdz128rmk_vprolvdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vprolvdz128rmk_vprolvdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVDZ128rmk + %xmm0 = VPROLVDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vprolvdz256rmk_vprolvdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vprolvdz256rmk_vprolvdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVDZ256rmk + %ymm0 = VPROLVDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vprolvqz128rmk_vprolvqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vprolvqz128rmk_vprolvqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVQZ128rmk + %xmm0 = VPROLVQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vprolvqz256rmk_vprolvqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vprolvqz256rmk_vprolvqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROLVQZ256rmk + %ymm0 = VPROLVQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vprorvdz128rmk_vprorvdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vprorvdz128rmk_vprorvdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVDZ128rmk + %xmm0 = VPRORVDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vprorvdz256rmk_vprorvdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vprorvdz256rmk_vprorvdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVDZ256rmk + %ymm0 = VPRORVDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vprorvqz128rmk_vprorvqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vprorvqz128rmk_vprorvqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVQZ128rmk + %xmm0 = VPRORVQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vprorvqz256rmk_vprorvqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vprorvqz256rmk_vprorvqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPRORVQZ256rmk + %ymm0 = VPRORVQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpslldz128rmk_vpslldz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpslldz128rmk_vpslldz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ128rmk + %xmm0 = VPSLLDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpslldz256rmk_vpslldz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpslldz256rmk_vpslldz256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLDZ256rmk + %ymm0 = VPSLLDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllqz128rmk_vpsllqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllqz128rmk_vpsllqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ128rmk + %xmm0 = VPSLLQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllqz256rmk_vpsllqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllqz256rmk_vpsllqz256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLQZ256rmk + %ymm0 = VPSLLQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllvdz128rmk_vpsllvdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllvdz128rmk_vpsllvdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVDZ128rmk + %xmm0 = VPSLLVDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllvdz256rmk_vpsllvdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsllvdz256rmk_vpsllvdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVDZ256rmk + %ymm0 = VPSLLVDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllvqz128rmk_vpsllvqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsllvqz128rmk_vpsllvqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVQZ128rmk + %xmm0 = VPSLLVQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsllvqz256rmk_vpsllvqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsllvqz256rmk_vpsllvqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSLLVQZ256rmk + %ymm0 = VPSLLVQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsradz128rmk_vpsradz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsradz128rmk_vpsradz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ128rmk + %xmm0 = VPSRADZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsradz256rmk_vpsradz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsradz256rmk_vpsradz256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRADZ256rmk + %ymm0 = VPSRADZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsraqz128rmk_vpsraqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsraqz128rmk_vpsraqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ128rmk + %xmm0 = VPSRAQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsraqz256rmk_vpsraqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsraqz256rmk_vpsraqz256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAQZ256rmk + %ymm0 = VPSRAQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsravdz128rmk_vpsravdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsravdz128rmk_vpsravdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVDZ128rmk + %xmm0 = VPSRAVDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsravdz256rmk_vpsravdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsravdz256rmk_vpsravdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVDZ256rmk + %ymm0 = VPSRAVDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsravqz128rmk_vpsravqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsravqz128rmk_vpsravqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVQZ128rmk + %xmm0 = VPSRAVQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsravqz256rmk_vpsravqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsravqz256rmk_vpsravqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRAVQZ256rmk + %ymm0 = VPSRAVQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrldz128rmk_vpsrldz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrldz128rmk_vpsrldz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ128rmk + %xmm0 = VPSRLDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrldz256rmk_vpsrldz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrldz256rmk_vpsrldz256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLDZ256rmk + %ymm0 = VPSRLDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlqz128rmk_vpsrlqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz128rmk_vpsrlqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ128rmk + %xmm0 = VPSRLQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlqz256rmk_vpsrlqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlqz256rmk_vpsrlqz256rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLQZ256rmk + %ymm0 = VPSRLQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlvdz128rmk_vpsrlvdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlvdz128rmk_vpsrlvdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVDZ128rmk + %xmm0 = VPSRLVDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlvdz256rmk_vpsrlvdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlvdz256rmk_vpsrlvdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVDZ256rmk + %ymm0 = VPSRLVDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlvqz128rmk_vpsrlvqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlvqz128rmk_vpsrlvqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVQZ128rmk + %xmm0 = VPSRLVQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsrlvqz256rmk_vpsrlvqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsrlvqz256rmk_vpsrlvqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSRLVQZ256rmk + %ymm0 = VPSRLVQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubdz128rmk_vpsubdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubdz128rmk_vpsubdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBDZ128rmk + %xmm0 = VPSUBDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubdz256rmk_vpsubdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsubdz256rmk_vpsubdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBDZ256rmk + %ymm0 = VPSUBDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubqz128rmk_vpsubqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpsubqz128rmk_vpsubqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBQZ128rmk + %xmm0 = VPSUBQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpsubqz256rmk_vpsubqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpsubqz256rmk_vpsubqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSUBQZ256rmk + %ymm0 = VPSUBQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpternlogdz128rmik_vpternlogdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogdz128rmik_vpternlogdz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGDZ128rmik + %xmm0 = VPTERNLOGDZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpternlogdz128rmikz_vpternlogdz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogdz128rmikz_vpternlogdz128rrikz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGDZ128rmikz + %xmm0 = VPTERNLOGDZ128rrikz undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpternlogdz256rmik_vpternlogdz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogdz256rmik_vpternlogdz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGDZ256rmik + %ymm0 = VPTERNLOGDZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpternlogdz256rmikz_vpternlogdz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogdz256rmikz_vpternlogdz256rrikz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGDZ256rmikz + %ymm0 = VPTERNLOGDZ256rrikz undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpternlogqz128rmik_vpternlogqz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogqz128rmik_vpternlogqz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGQZ128rmik + %xmm0 = VPTERNLOGQZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpternlogqz128rmikz_vpternlogqz128rrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogqz128rmikz_vpternlogqz128rrikz_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGQZ128rmikz + %xmm0 = VPTERNLOGQZ128rrikz undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpternlogqz256rmik_vpternlogqz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogqz256rmik_vpternlogqz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGQZ256rmik + %ymm0 = VPTERNLOGQZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpternlogqz256rmikz_vpternlogqz256rrikz_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpternlogqz256rmikz_vpternlogqz256rrikz_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPTERNLOGQZ256rmikz + %ymm0 = VPTERNLOGQZ256rrikz undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vpunpckhdqz128rmk_vpunpckhdqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhdqz128rmk_vpunpckhdqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHDQZ128rmk + %xmm0 = VPUNPCKHDQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckhdqz256rmk_vpunpckhdqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhdqz256rmk_vpunpckhdqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHDQZ256rmk + %ymm0 = VPUNPCKHDQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckhqdqz128rmk_vpunpckhqdqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhqdqz128rmk_vpunpckhqdqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHQDQZ128rmk + %xmm0 = VPUNPCKHQDQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckhqdqz256rmk_vpunpckhqdqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckhqdqz256rmk_vpunpckhqdqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKHQDQZ256rmk + %ymm0 = VPUNPCKHQDQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckldqz128rmk_vpunpckldqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckldqz128rmk_vpunpckldqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLDQZ128rmk + %xmm0 = VPUNPCKLDQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpckldqz256rmk_vpunpckldqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpunpckldqz256rmk_vpunpckldqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLDQZ256rmk + %ymm0 = VPUNPCKLDQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpcklqdqz128rmk_vpunpcklqdqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpunpcklqdqz128rmk_vpunpcklqdqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLQDQZ128rmk + %xmm0 = VPUNPCKLQDQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpunpcklqdqz256rmk_vpunpcklqdqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpunpcklqdqz256rmk_vpunpcklqdqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPUNPCKLQDQZ256rmk + %ymm0 = VPUNPCKLQDQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpxordz128rmk_vpxordz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpxordz128rmk_vpxordz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORDZ128rmk + %xmm0 = VPXORDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpxordz256rmk_vpxordz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpxordz256rmk_vpxordz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORDZ256rmk + %ymm0 = VPXORDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vpxorqz128rmk_vpxorqz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpxorqz128rmk_vpxorqz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORQZ128rmk + %xmm0 = VPXORQZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vpxorqz256rmk_vpxorqz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpxorqz256rmk_vpxorqz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPXORQZ256rmk + %ymm0 = VPXORQZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vscalefpdz128rmk_vscalefpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vscalefpdz128rmk_vscalefpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPDZ128rmk + %xmm0 = VSCALEFPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vscalefpdz256rmk_vscalefpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vscalefpdz256rmk_vscalefpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPDZ256rmk + %ymm0 = VSCALEFPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vscalefpsz128rmk_vscalefpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vscalefpsz128rmk_vscalefpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPSZ128rmk + %xmm0 = VSCALEFPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vscalefpsz256rmk_vscalefpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vscalefpsz256rmk_vscalefpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSCALEFPSZ256rmk + %ymm0 = VSCALEFPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vshuff32x4z256rmik_vshuff32x4z256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vshuff32x4z256rmik_vshuff32x4z256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF32X4Z256rmik + %ymm0 = VSHUFF32X4Z256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshuff64x2z256rmik_vshuff64x2z256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vshuff64x2z256rmik_vshuff64x2z256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFF64X2Z256rmik + %ymm0 = VSHUFF64X2Z256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshufi32x4z256rmik_vshufi32x4z256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vshufi32x4z256rmik_vshufi32x4z256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI32X4Z256rmik + %ymm0 = VSHUFI32X4Z256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshufi64x2z256rmik_vshufi64x2z256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vshufi64x2z256rmik_vshufi64x2z256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFI64X2Z256rmik + %ymm0 = VSHUFI64X2Z256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshufpdz128rmik_vshufpdz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vshufpdz128rmik_vshufpdz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPDZ128rmik + %xmm0 = VSHUFPDZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshufpdz256rmik_vshufpdz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vshufpdz256rmik_vshufpdz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPDZ256rmik + %ymm0 = VSHUFPDZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshufpsz128rmik_vshufpsz128rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vshufpsz128rmik_vshufpsz128rrik_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPSZ128rmik + %xmm0 = VSHUFPSZ128rrik undef %xmm1, undef %k1, undef %xmm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vshufpsz256rmik_vshufpsz256rrik_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vshufpsz256rmik_vshufpsz256rrik_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSHUFPSZ256rmik + %ymm0 = VSHUFPSZ256rrik undef %ymm1, undef %k1, undef %ymm2, %4, 0 + RET 0 +... +--- +name: stack_fold_vsubpdz128rmk_vsubpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vsubpdz128rmk_vsubpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPDZ128rmk + %xmm0 = VSUBPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vsubpdz256rmk_vsubpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vsubpdz256rmk_vsubpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPDZ256rmk + %ymm0 = VSUBPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vsubpsz128rmk_vsubpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vsubpsz128rmk_vsubpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPSZ128rmk + %xmm0 = VSUBPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vsubpsz256rmk_vsubpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vsubpsz256rmk_vsubpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VSUBPSZ256rmk + %ymm0 = VSUBPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vunpckhpdz128rmk_vunpckhpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vunpckhpdz128rmk_vunpckhpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPDZ128rmk + %xmm0 = VUNPCKHPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vunpckhpdz256rmk_vunpckhpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vunpckhpdz256rmk_vunpckhpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPDZ256rmk + %ymm0 = VUNPCKHPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vunpckhpsz128rmk_vunpckhpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vunpckhpsz128rmk_vunpckhpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPSZ128rmk + %xmm0 = VUNPCKHPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vunpckhpsz256rmk_vunpckhpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vunpckhpsz256rmk_vunpckhpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKHPSZ256rmk + %ymm0 = VUNPCKHPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vunpcklpdz128rmk_vunpcklpdz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vunpcklpdz128rmk_vunpcklpdz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPDZ128rmk + %xmm0 = VUNPCKLPDZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vunpcklpdz256rmk_vunpcklpdz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vunpcklpdz256rmk_vunpcklpdz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPDZ256rmk + %ymm0 = VUNPCKLPDZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... +--- +name: stack_fold_vunpcklpsz128rmk_vunpcklpsz128rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr128x } +liveins: + - { reg: '%xmm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vunpcklpsz128rmk_vunpcklpsz128rrk_test + %4 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPSZ128rmk + %xmm0 = VUNPCKLPSZ128rrk undef %xmm1, undef %k1, undef %xmm2, %4 + RET 0 +... +--- +name: stack_fold_vunpcklpsz256rmk_vunpcklpsz256rrk_test +tracksRegLiveness: true +registers: + - { id: 4, class: vr256x } +liveins: + - { reg: '%ymm3', virtual-reg: '%4' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vunpcklpsz256rmk_vunpcklpsz256rrk_test + %4 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VUNPCKLPSZ256rmk + %ymm0 = VUNPCKLPSZ256rrk undef %ymm1, undef %k1, undef %ymm2, %4 + RET 0 +... Index: test/CodeGen/X86/memoryFolding-other.mir =================================================================== --- test/CodeGen/X86/memoryFolding-other.mir +++ test/CodeGen/X86/memoryFolding-other.mir @@ -0,0 +1,9359 @@ +# RUN: llc -run-pass greedy -stack-alignment=64 -o - %s | FileCheck %s +# Stack alignment set to 64 to enable folding of aligned mov instructions. +--- | + attributes #0 = { "target-features" = "+3dnow,+adx,+bmi,+bmi2,+cmov,+f16c,+fma,+fma4,+lzcnt,+mmx,+mpx,+popcnt,+sha,+tbm,+xop" } + define void @stack_fold_bndmovmr32mr_bndmovmrrr_test() #0 { ret void } + define void @stack_fold_mmx_movd64from64rm_mmx_movd64from64rr_test() #0 { ret void } + define void @stack_fold_mmx_movd64mr_mmx_movd64rr_test() #0 { ret void } + define void @stack_fold_mmx_movq64mr_mmx_movq64rr_test() #0 { ret void } + define void @stack_fold_vcvtps2phymr_vcvtps2phyrr_test() #0 { ret void } + define void @stack_fold_vcvtps2phmr_vcvtps2phrr_test() #0 { ret void } + define void @stack_fold_adox32rm_adox32rr_test() #0 { ret void } + define void @stack_fold_adox64rm_adox64rr_test() #0 { ret void } + define void @stack_fold_bextr32rm_bextr32rr_test() #0 { ret void } + define void @stack_fold_bextr64rm_bextr64rr_test() #0 { ret void } + define void @stack_fold_bextri32mi_bextri32ri_test() #0 { ret void } + define void @stack_fold_bextri64mi_bextri64ri_test() #0 { ret void } + define void @stack_fold_blcfill32rm_blcfill32rr_test() #0 { ret void } + define void @stack_fold_blcfill64rm_blcfill64rr_test() #0 { ret void } + define void @stack_fold_blci32rm_blci32rr_test() #0 { ret void } + define void @stack_fold_blci64rm_blci64rr_test() #0 { ret void } + define void @stack_fold_blcic32rm_blcic32rr_test() #0 { ret void } + define void @stack_fold_blcic64rm_blcic64rr_test() #0 { ret void } + define void @stack_fold_blcmsk32rm_blcmsk32rr_test() #0 { ret void } + define void @stack_fold_blcmsk64rm_blcmsk64rr_test() #0 { ret void } + define void @stack_fold_blcs32rm_blcs32rr_test() #0 { ret void } + define void @stack_fold_blcs64rm_blcs64rr_test() #0 { ret void } + define void @stack_fold_blsfill32rm_blsfill32rr_test() #0 { ret void } + define void @stack_fold_blsfill64rm_blsfill64rr_test() #0 { ret void } + define void @stack_fold_blsi32rm_blsi32rr_test() #0 { ret void } + define void @stack_fold_blsi64rm_blsi64rr_test() #0 { ret void } + define void @stack_fold_blsic32rm_blsic32rr_test() #0 { ret void } + define void @stack_fold_blsic64rm_blsic64rr_test() #0 { ret void } + define void @stack_fold_blsmsk32rm_blsmsk32rr_test() #0 { ret void } + define void @stack_fold_blsmsk64rm_blsmsk64rr_test() #0 { ret void } + define void @stack_fold_blsr32rm_blsr32rr_test() #0 { ret void } + define void @stack_fold_blsr64rm_blsr64rr_test() #0 { ret void } + define void @stack_fold_bndcl32rm_bndcl32rr_test() #0 { ret void } + define void @stack_fold_bndcl64rm_bndcl64rr_test() #0 { ret void } + define void @stack_fold_bndcn32rm_bndcn32rr_test() #0 { ret void } + define void @stack_fold_bndcn64rm_bndcn64rr_test() #0 { ret void } + define void @stack_fold_bndcu32rm_bndcu32rr_test() #0 { ret void } + define void @stack_fold_bndcu64rm_bndcu64rr_test() #0 { ret void } + define void @stack_fold_bndmovrm32rm_bndmovrmrr_test() #0 { ret void } + define void @stack_fold_bzhi32rm_bzhi32rr_test() #0 { ret void } + define void @stack_fold_bzhi64rm_bzhi64rr_test() #0 { ret void } + define void @stack_fold_lzcnt16rm_lzcnt16rr_test() #0 { ret void } + define void @stack_fold_lzcnt32rm_lzcnt32rr_test() #0 { ret void } + define void @stack_fold_lzcnt64rm_lzcnt64rr_test() #0 { ret void } + define void @stack_fold_mmx_movd64rm_mmx_movd64rr_test() #0 { ret void } + define void @stack_fold_mmx_movd64to64rm_mmx_movd64to64rr_test() #0 { ret void } + define void @stack_fold_mmx_movq64rm_mmx_movq64rr_test() #0 { ret void } + define void @stack_fold_mmx_pshufwmi_mmx_pshufwri_test() #0 { ret void } + define void @stack_fold_pf2idrm_pf2idrr_test() #0 { ret void } + define void @stack_fold_pf2iwrm_pf2iwrr_test() #0 { ret void } + define void @stack_fold_pfrcprm_pfrcprr_test() #0 { ret void } + define void @stack_fold_pfrsqrtrm_pfrsqrtrr_test() #0 { ret void } + define void @stack_fold_pi2fdrm_pi2fdrr_test() #0 { ret void } + define void @stack_fold_pi2fwrm_pi2fwrr_test() #0 { ret void } + define void @stack_fold_popcnt16rm_popcnt16rr_test() #0 { ret void } + define void @stack_fold_popcnt32rm_popcnt32rr_test() #0 { ret void } + define void @stack_fold_popcnt64rm_popcnt64rr_test() #0 { ret void } + define void @stack_fold_pswapdrm_pswapdrr_test() #0 { ret void } + define void @stack_fold_rorx32mi_rorx32ri_test() #0 { ret void } + define void @stack_fold_rorx64mi_rorx64ri_test() #0 { ret void } + define void @stack_fold_sarx32rm_sarx32rr_test() #0 { ret void } + define void @stack_fold_sarx64rm_sarx64rr_test() #0 { ret void } + define void @stack_fold_shlx32rm_shlx32rr_test() #0 { ret void } + define void @stack_fold_shlx64rm_shlx64rr_test() #0 { ret void } + define void @stack_fold_shrx32rm_shrx32rr_test() #0 { ret void } + define void @stack_fold_shrx64rm_shrx64rr_test() #0 { ret void } + define void @stack_fold_t1mskc32rm_t1mskc32rr_test() #0 { ret void } + define void @stack_fold_t1mskc64rm_t1mskc64rr_test() #0 { ret void } + define void @stack_fold_tzcnt16rm_tzcnt16rr_test() #0 { ret void } + define void @stack_fold_tzcnt32rm_tzcnt32rr_test() #0 { ret void } + define void @stack_fold_tzcnt64rm_tzcnt64rr_test() #0 { ret void } + define void @stack_fold_tzmsk32rm_tzmsk32rr_test() #0 { ret void } + define void @stack_fold_tzmsk64rm_tzmsk64rr_test() #0 { ret void } + define void @stack_fold_vcvtph2psyrm_vcvtph2psyrr_test() #0 { ret void } + define void @stack_fold_vcvtph2psrm_vcvtph2psrr_test() #0 { ret void } + define void @stack_fold_vfrczpdrm_vfrczpdrr_test() #0 { ret void } + define void @stack_fold_vfrczpdrmy_vfrczpdrry_test() #0 { ret void } + define void @stack_fold_vfrczpsrm_vfrczpsrr_test() #0 { ret void } + define void @stack_fold_vfrczpsrmy_vfrczpsrry_test() #0 { ret void } + define void @stack_fold_vfrczsdrm_vfrczsdrr_test() #0 { ret void } + define void @stack_fold_vfrczssrm_vfrczssrr_test() #0 { ret void } + define void @stack_fold_vphaddbdrm_vphaddbdrr_test() #0 { ret void } + define void @stack_fold_vphaddbqrm_vphaddbqrr_test() #0 { ret void } + define void @stack_fold_vphaddbwrm_vphaddbwrr_test() #0 { ret void } + define void @stack_fold_vphadddqrm_vphadddqrr_test() #0 { ret void } + define void @stack_fold_vphaddubdrm_vphaddubdrr_test() #0 { ret void } + define void @stack_fold_vphaddubqrm_vphaddubqrr_test() #0 { ret void } + define void @stack_fold_vphaddubwrm_vphaddubwrr_test() #0 { ret void } + define void @stack_fold_vphaddudqrm_vphaddudqrr_test() #0 { ret void } + define void @stack_fold_vphadduwdrm_vphadduwdrr_test() #0 { ret void } + define void @stack_fold_vphadduwqrm_vphadduwqrr_test() #0 { ret void } + define void @stack_fold_vphaddwdrm_vphaddwdrr_test() #0 { ret void } + define void @stack_fold_vphaddwqrm_vphaddwqrr_test() #0 { ret void } + define void @stack_fold_vphsubbwrm_vphsubbwrr_test() #0 { ret void } + define void @stack_fold_vphsubdqrm_vphsubdqrr_test() #0 { ret void } + define void @stack_fold_vphsubwdrm_vphsubwdrr_test() #0 { ret void } + define void @stack_fold_vprotbmi_vprotbri_test() #0 { ret void } + define void @stack_fold_vprotbmr_vprotbrr_test() #0 { ret void } + define void @stack_fold_vprotdmi_vprotdri_test() #0 { ret void } + define void @stack_fold_vprotdmr_vprotdrr_test() #0 { ret void } + define void @stack_fold_vprotqmi_vprotqri_test() #0 { ret void } + define void @stack_fold_vprotqmr_vprotqrr_test() #0 { ret void } + define void @stack_fold_vprotwmi_vprotwri_test() #0 { ret void } + define void @stack_fold_vprotwmr_vprotwrr_test() #0 { ret void } + define void @stack_fold_vpshabmr_vpshabrr_test() #0 { ret void } + define void @stack_fold_vpshadmr_vpshadrr_test() #0 { ret void } + define void @stack_fold_vpshaqmr_vpshaqrr_test() #0 { ret void } + define void @stack_fold_vpshawmr_vpshawrr_test() #0 { ret void } + define void @stack_fold_vpshlbmr_vpshlbrr_test() #0 { ret void } + define void @stack_fold_vpshldmr_vpshldrr_test() #0 { ret void } + define void @stack_fold_vpshlqmr_vpshlqrr_test() #0 { ret void } + define void @stack_fold_vpshlwmr_vpshlwrr_test() #0 { ret void } + define void @stack_fold_adcx32rm_adcx32rr_test() #0 { ret void } + define void @stack_fold_adcx64rm_adcx64rr_test() #0 { ret void } + define void @stack_fold_andn32rm_andn32rr_test() #0 { ret void } + define void @stack_fold_andn64rm_andn64rr_test() #0 { ret void } + define void @stack_fold_cmova16rm_cmova16rr_test() #0 { ret void } + define void @stack_fold_cmova32rm_cmova32rr_test() #0 { ret void } + define void @stack_fold_cmova64rm_cmova64rr_test() #0 { ret void } + define void @stack_fold_cmovae16rm_cmovae16rr_test() #0 { ret void } + define void @stack_fold_cmovae32rm_cmovae32rr_test() #0 { ret void } + define void @stack_fold_cmovae64rm_cmovae64rr_test() #0 { ret void } + define void @stack_fold_cmovb16rm_cmovb16rr_test() #0 { ret void } + define void @stack_fold_cmovb32rm_cmovb32rr_test() #0 { ret void } + define void @stack_fold_cmovb64rm_cmovb64rr_test() #0 { ret void } + define void @stack_fold_cmovbe16rm_cmovbe16rr_test() #0 { ret void } + define void @stack_fold_cmovbe32rm_cmovbe32rr_test() #0 { ret void } + define void @stack_fold_cmovbe64rm_cmovbe64rr_test() #0 { ret void } + define void @stack_fold_cmove16rm_cmove16rr_test() #0 { ret void } + define void @stack_fold_cmove32rm_cmove32rr_test() #0 { ret void } + define void @stack_fold_cmove64rm_cmove64rr_test() #0 { ret void } + define void @stack_fold_cmovg16rm_cmovg16rr_test() #0 { ret void } + define void @stack_fold_cmovg32rm_cmovg32rr_test() #0 { ret void } + define void @stack_fold_cmovg64rm_cmovg64rr_test() #0 { ret void } + define void @stack_fold_cmovge16rm_cmovge16rr_test() #0 { ret void } + define void @stack_fold_cmovge32rm_cmovge32rr_test() #0 { ret void } + define void @stack_fold_cmovge64rm_cmovge64rr_test() #0 { ret void } + define void @stack_fold_cmovl16rm_cmovl16rr_test() #0 { ret void } + define void @stack_fold_cmovl32rm_cmovl32rr_test() #0 { ret void } + define void @stack_fold_cmovl64rm_cmovl64rr_test() #0 { ret void } + define void @stack_fold_cmovle16rm_cmovle16rr_test() #0 { ret void } + define void @stack_fold_cmovle32rm_cmovle32rr_test() #0 { ret void } + define void @stack_fold_cmovle64rm_cmovle64rr_test() #0 { ret void } + define void @stack_fold_cmovne16rm_cmovne16rr_test() #0 { ret void } + define void @stack_fold_cmovne32rm_cmovne32rr_test() #0 { ret void } + define void @stack_fold_cmovne64rm_cmovne64rr_test() #0 { ret void } + define void @stack_fold_cmovno16rm_cmovno16rr_test() #0 { ret void } + define void @stack_fold_cmovno32rm_cmovno32rr_test() #0 { ret void } + define void @stack_fold_cmovno64rm_cmovno64rr_test() #0 { ret void } + define void @stack_fold_cmovnp16rm_cmovnp16rr_test() #0 { ret void } + define void @stack_fold_cmovnp32rm_cmovnp32rr_test() #0 { ret void } + define void @stack_fold_cmovnp64rm_cmovnp64rr_test() #0 { ret void } + define void @stack_fold_cmovns16rm_cmovns16rr_test() #0 { ret void } + define void @stack_fold_cmovns32rm_cmovns32rr_test() #0 { ret void } + define void @stack_fold_cmovns64rm_cmovns64rr_test() #0 { ret void } + define void @stack_fold_cmovo16rm_cmovo16rr_test() #0 { ret void } + define void @stack_fold_cmovo32rm_cmovo32rr_test() #0 { ret void } + define void @stack_fold_cmovo64rm_cmovo64rr_test() #0 { ret void } + define void @stack_fold_cmovp16rm_cmovp16rr_test() #0 { ret void } + define void @stack_fold_cmovp32rm_cmovp32rr_test() #0 { ret void } + define void @stack_fold_cmovp64rm_cmovp64rr_test() #0 { ret void } + define void @stack_fold_cmovs16rm_cmovs16rr_test() #0 { ret void } + define void @stack_fold_cmovs32rm_cmovs32rr_test() #0 { ret void } + define void @stack_fold_cmovs64rm_cmovs64rr_test() #0 { ret void } + define void @stack_fold_mmx_packssdwirm_mmx_packssdwirr_test() #0 { ret void } + define void @stack_fold_mmx_packsswbirm_mmx_packsswbirr_test() #0 { ret void } + define void @stack_fold_mmx_packuswbirm_mmx_packuswbirr_test() #0 { ret void } + define void @stack_fold_mmx_paddbirm_mmx_paddbirr_test() #0 { ret void } + define void @stack_fold_mmx_padddirm_mmx_padddirr_test() #0 { ret void } + define void @stack_fold_mmx_paddsbirm_mmx_paddsbirr_test() #0 { ret void } + define void @stack_fold_mmx_paddswirm_mmx_paddswirr_test() #0 { ret void } + define void @stack_fold_mmx_paddusbirm_mmx_paddusbirr_test() #0 { ret void } + define void @stack_fold_mmx_padduswirm_mmx_padduswirr_test() #0 { ret void } + define void @stack_fold_mmx_paddwirm_mmx_paddwirr_test() #0 { ret void } + define void @stack_fold_mmx_pandnirm_mmx_pandnirr_test() #0 { ret void } + define void @stack_fold_mmx_pandirm_mmx_pandirr_test() #0 { ret void } + define void @stack_fold_mmx_pcmpeqbirm_mmx_pcmpeqbirr_test() #0 { ret void } + define void @stack_fold_mmx_pcmpeqdirm_mmx_pcmpeqdirr_test() #0 { ret void } + define void @stack_fold_mmx_pcmpeqwirm_mmx_pcmpeqwirr_test() #0 { ret void } + define void @stack_fold_mmx_pcmpgtbirm_mmx_pcmpgtbirr_test() #0 { ret void } + define void @stack_fold_mmx_pcmpgtdirm_mmx_pcmpgtdirr_test() #0 { ret void } + define void @stack_fold_mmx_pcmpgtwirm_mmx_pcmpgtwirr_test() #0 { ret void } + define void @stack_fold_mmx_pmaddwdirm_mmx_pmaddwdirr_test() #0 { ret void } + define void @stack_fold_mmx_pmulhwirm_mmx_pmulhwirr_test() #0 { ret void } + define void @stack_fold_mmx_pmullwirm_mmx_pmullwirr_test() #0 { ret void } + define void @stack_fold_mmx_porirm_mmx_porirr_test() #0 { ret void } + define void @stack_fold_mmx_pslldrm_mmx_pslldrr_test() #0 { ret void } + define void @stack_fold_mmx_psllqrm_mmx_psllqrr_test() #0 { ret void } + define void @stack_fold_mmx_psllwrm_mmx_psllwrr_test() #0 { ret void } + define void @stack_fold_mmx_psradrm_mmx_psradrr_test() #0 { ret void } + define void @stack_fold_mmx_psrawrm_mmx_psrawrr_test() #0 { ret void } + define void @stack_fold_mmx_psrldrm_mmx_psrldrr_test() #0 { ret void } + define void @stack_fold_mmx_psrlqrm_mmx_psrlqrr_test() #0 { ret void } + define void @stack_fold_mmx_psrlwrm_mmx_psrlwrr_test() #0 { ret void } + define void @stack_fold_mmx_psubbirm_mmx_psubbirr_test() #0 { ret void } + define void @stack_fold_mmx_psubdirm_mmx_psubdirr_test() #0 { ret void } + define void @stack_fold_mmx_psubsbirm_mmx_psubsbirr_test() #0 { ret void } + define void @stack_fold_mmx_psubswirm_mmx_psubswirr_test() #0 { ret void } + define void @stack_fold_mmx_psubusbirm_mmx_psubusbirr_test() #0 { ret void } + define void @stack_fold_mmx_psubuswirm_mmx_psubuswirr_test() #0 { ret void } + define void @stack_fold_mmx_psubwirm_mmx_psubwirr_test() #0 { ret void } + define void @stack_fold_mmx_punpckhbwirm_mmx_punpckhbwirr_test() #0 { ret void } + define void @stack_fold_mmx_punpckhdqirm_mmx_punpckhdqirr_test() #0 { ret void } + define void @stack_fold_mmx_punpckhwdirm_mmx_punpckhwdirr_test() #0 { ret void } + define void @stack_fold_mmx_punpcklbwirm_mmx_punpcklbwirr_test() #0 { ret void } + define void @stack_fold_mmx_punpckldqirm_mmx_punpckldqirr_test() #0 { ret void } + define void @stack_fold_mmx_punpcklwdirm_mmx_punpcklwdirr_test() #0 { ret void } + define void @stack_fold_mmx_pxorirm_mmx_pxorirr_test() #0 { ret void } + define void @stack_fold_mulx32rm_mulx32rr_test() #0 { ret void } + define void @stack_fold_mulx64rm_mulx64rr_test() #0 { ret void } + define void @stack_fold_pavgusbrm_pavgusbrr_test() #0 { ret void } + define void @stack_fold_pdep32rm_pdep32rr_test() #0 { ret void } + define void @stack_fold_pdep64rm_pdep64rr_test() #0 { ret void } + define void @stack_fold_pext32rm_pext32rr_test() #0 { ret void } + define void @stack_fold_pext64rm_pext64rr_test() #0 { ret void } + define void @stack_fold_pfaccrm_pfaccrr_test() #0 { ret void } + define void @stack_fold_pfaddrm_pfaddrr_test() #0 { ret void } + define void @stack_fold_pfcmpeqrm_pfcmpeqrr_test() #0 { ret void } + define void @stack_fold_pfcmpgerm_pfcmpgerr_test() #0 { ret void } + define void @stack_fold_pfcmpgtrm_pfcmpgtrr_test() #0 { ret void } + define void @stack_fold_pfmaxrm_pfmaxrr_test() #0 { ret void } + define void @stack_fold_pfminrm_pfminrr_test() #0 { ret void } + define void @stack_fold_pfmulrm_pfmulrr_test() #0 { ret void } + define void @stack_fold_pfnaccrm_pfnaccrr_test() #0 { ret void } + define void @stack_fold_pfpnaccrm_pfpnaccrr_test() #0 { ret void } + define void @stack_fold_pfrcpit1rm_pfrcpit1rr_test() #0 { ret void } + define void @stack_fold_pfrcpit2rm_pfrcpit2rr_test() #0 { ret void } + define void @stack_fold_pfrsqit1rm_pfrsqit1rr_test() #0 { ret void } + define void @stack_fold_pfsubrrm_pfsubrrr_test() #0 { ret void } + define void @stack_fold_pfsubrm_pfsubrr_test() #0 { ret void } + define void @stack_fold_pmulhrwrm_pmulhrwrr_test() #0 { ret void } + define void @stack_fold_sha1msg1rm_sha1msg1rr_test() #0 { ret void } + define void @stack_fold_sha1msg2rm_sha1msg2rr_test() #0 { ret void } + define void @stack_fold_sha1nexterm_sha1nexterr_test() #0 { ret void } + define void @stack_fold_sha1rnds4rmi_sha1rnds4rri_test() #0 { ret void } + define void @stack_fold_sha256msg1rm_sha256msg1rr_test() #0 { ret void } + define void @stack_fold_sha256msg2rm_sha256msg2rr_test() #0 { ret void } + define void @stack_fold_sha256rnds2rm_sha256rnds2rr_test() #0 { ret void } + define void @stack_fold_vfmaddpd4ymr_vfmaddpd4yrr_test() #0 { ret void } + define void @stack_fold_vfmaddpd4mr_vfmaddpd4rr_test() #0 { ret void } + define void @stack_fold_vfmaddps4ymr_vfmaddps4yrr_test() #0 { ret void } + define void @stack_fold_vfmaddps4mr_vfmaddps4rr_test() #0 { ret void } + define void @stack_fold_vfmaddsd4mr_vfmaddsd4rr_test() #0 { ret void } + define void @stack_fold_vfmaddsd4mr_int_vfmaddsd4rr_int_test() #0 { ret void } + define void @stack_fold_vfmaddss4mr_vfmaddss4rr_test() #0 { ret void } + define void @stack_fold_vfmaddss4mr_int_vfmaddss4rr_int_test() #0 { ret void } + define void @stack_fold_vfmaddsubpd4ymr_vfmaddsubpd4yrr_test() #0 { ret void } + define void @stack_fold_vfmaddsubpd4mr_vfmaddsubpd4rr_test() #0 { ret void } + define void @stack_fold_vfmaddsubps4ymr_vfmaddsubps4yrr_test() #0 { ret void } + define void @stack_fold_vfmaddsubps4mr_vfmaddsubps4rr_test() #0 { ret void } + define void @stack_fold_vfmsubaddpd4ymr_vfmsubaddpd4yrr_test() #0 { ret void } + define void @stack_fold_vfmsubaddpd4mr_vfmsubaddpd4rr_test() #0 { ret void } + define void @stack_fold_vfmsubaddps4ymr_vfmsubaddps4yrr_test() #0 { ret void } + define void @stack_fold_vfmsubaddps4mr_vfmsubaddps4rr_test() #0 { ret void } + define void @stack_fold_vfmsubpd4ymr_vfmsubpd4yrr_test() #0 { ret void } + define void @stack_fold_vfmsubpd4mr_vfmsubpd4rr_test() #0 { ret void } + define void @stack_fold_vfmsubps4ymr_vfmsubps4yrr_test() #0 { ret void } + define void @stack_fold_vfmsubps4mr_vfmsubps4rr_test() #0 { ret void } + define void @stack_fold_vfmsubsd4mr_vfmsubsd4rr_test() #0 { ret void } + define void @stack_fold_vfmsubsd4mr_int_vfmsubsd4rr_int_test() #0 { ret void } + define void @stack_fold_vfmsubss4mr_vfmsubss4rr_test() #0 { ret void } + define void @stack_fold_vfmsubss4mr_int_vfmsubss4rr_int_test() #0 { ret void } + define void @stack_fold_vfnmaddpd4ymr_vfnmaddpd4yrr_test() #0 { ret void } + define void @stack_fold_vfnmaddpd4mr_vfnmaddpd4rr_test() #0 { ret void } + define void @stack_fold_vfnmaddps4ymr_vfnmaddps4yrr_test() #0 { ret void } + define void @stack_fold_vfnmaddps4mr_vfnmaddps4rr_test() #0 { ret void } + define void @stack_fold_vfnmaddsd4mr_vfnmaddsd4rr_test() #0 { ret void } + define void @stack_fold_vfnmaddsd4mr_int_vfnmaddsd4rr_int_test() #0 { ret void } + define void @stack_fold_vfnmaddss4mr_vfnmaddss4rr_test() #0 { ret void } + define void @stack_fold_vfnmaddss4mr_int_vfnmaddss4rr_int_test() #0 { ret void } + define void @stack_fold_vfnmsubpd4ymr_vfnmsubpd4yrr_test() #0 { ret void } + define void @stack_fold_vfnmsubpd4mr_vfnmsubpd4rr_test() #0 { ret void } + define void @stack_fold_vfnmsubps4ymr_vfnmsubps4yrr_test() #0 { ret void } + define void @stack_fold_vfnmsubps4mr_vfnmsubps4rr_test() #0 { ret void } + define void @stack_fold_vfnmsubsd4mr_vfnmsubsd4rr_test() #0 { ret void } + define void @stack_fold_vfnmsubsd4mr_int_vfnmsubsd4rr_int_test() #0 { ret void } + define void @stack_fold_vfnmsubss4mr_vfnmsubss4rr_test() #0 { ret void } + define void @stack_fold_vfnmsubss4mr_int_vfnmsubss4rr_int_test() #0 { ret void } + define void @stack_fold_vpcmovyrmr_vpcmovyrrr_test() #0 { ret void } + define void @stack_fold_vpcmovrmr_vpcmovrrr_test() #0 { ret void } + define void @stack_fold_vpcombmi_vpcombri_test() #0 { ret void } + define void @stack_fold_vpcombmi_alt_vpcombri_alt_test() #0 { ret void } + define void @stack_fold_vpcomdmi_vpcomdri_test() #0 { ret void } + define void @stack_fold_vpcomdmi_alt_vpcomdri_alt_test() #0 { ret void } + define void @stack_fold_vpcomqmi_vpcomqri_test() #0 { ret void } + define void @stack_fold_vpcomqmi_alt_vpcomqri_alt_test() #0 { ret void } + define void @stack_fold_vpcomubmi_vpcomubri_test() #0 { ret void } + define void @stack_fold_vpcomubmi_alt_vpcomubri_alt_test() #0 { ret void } + define void @stack_fold_vpcomudmi_vpcomudri_test() #0 { ret void } + define void @stack_fold_vpcomudmi_alt_vpcomudri_alt_test() #0 { ret void } + define void @stack_fold_vpcomuqmi_vpcomuqri_test() #0 { ret void } + define void @stack_fold_vpcomuqmi_alt_vpcomuqri_alt_test() #0 { ret void } + define void @stack_fold_vpcomuwmi_vpcomuwri_test() #0 { ret void } + define void @stack_fold_vpcomuwmi_alt_vpcomuwri_alt_test() #0 { ret void } + define void @stack_fold_vpcomwmi_vpcomwri_test() #0 { ret void } + define void @stack_fold_vpcomwmi_alt_vpcomwri_alt_test() #0 { ret void } + define void @stack_fold_vpermil2pdymr_vpermil2pdyrr_test() #0 { ret void } + define void @stack_fold_vpermil2pdmr_vpermil2pdrr_test() #0 { ret void } + define void @stack_fold_vpermil2psymr_vpermil2psyrr_test() #0 { ret void } + define void @stack_fold_vpermil2psmr_vpermil2psrr_test() #0 { ret void } + define void @stack_fold_vpmacsddrm_vpmacsddrr_test() #0 { ret void } + define void @stack_fold_vpmacsdqhrm_vpmacsdqhrr_test() #0 { ret void } + define void @stack_fold_vpmacsdqlrm_vpmacsdqlrr_test() #0 { ret void } + define void @stack_fold_vpmacssddrm_vpmacssddrr_test() #0 { ret void } + define void @stack_fold_vpmacssdqhrm_vpmacssdqhrr_test() #0 { ret void } + define void @stack_fold_vpmacssdqlrm_vpmacssdqlrr_test() #0 { ret void } + define void @stack_fold_vpmacsswdrm_vpmacsswdrr_test() #0 { ret void } + define void @stack_fold_vpmacsswwrm_vpmacsswwrr_test() #0 { ret void } + define void @stack_fold_vpmacswdrm_vpmacswdrr_test() #0 { ret void } + define void @stack_fold_vpmacswwrm_vpmacswwrr_test() #0 { ret void } + define void @stack_fold_vpmadcsswdrm_vpmadcsswdrr_test() #0 { ret void } + define void @stack_fold_vpmadcswdrm_vpmadcswdrr_test() #0 { ret void } + define void @stack_fold_vppermrmr_vppermrrr_test() #0 { ret void } + define void @stack_fold_vprotbrm_vprotbrr_test() #0 { ret void } + define void @stack_fold_vprotdrm_vprotdrr_test() #0 { ret void } + define void @stack_fold_vprotqrm_vprotqrr_test() #0 { ret void } + define void @stack_fold_vprotwrm_vprotwrr_test() #0 { ret void } + define void @stack_fold_vpshabrm_vpshabrr_test() #0 { ret void } + define void @stack_fold_vpshadrm_vpshadrr_test() #0 { ret void } + define void @stack_fold_vpshaqrm_vpshaqrr_test() #0 { ret void } + define void @stack_fold_vpshawrm_vpshawrr_test() #0 { ret void } + define void @stack_fold_vpshlbrm_vpshlbrr_test() #0 { ret void } + define void @stack_fold_vpshldrm_vpshldrr_test() #0 { ret void } + define void @stack_fold_vpshlqrm_vpshlqrr_test() #0 { ret void } + define void @stack_fold_vpshlwrm_vpshlwrr_test() #0 { ret void } + define void @stack_fold_vfmadd132pdym_vfmadd132pdyr_test() #0 { ret void } + define void @stack_fold_vfmadd132pdm_vfmadd132pdr_test() #0 { ret void } + define void @stack_fold_vfmadd132psym_vfmadd132psyr_test() #0 { ret void } + define void @stack_fold_vfmadd132psm_vfmadd132psr_test() #0 { ret void } + define void @stack_fold_vfmadd132sdm_vfmadd132sdr_test() #0 { ret void } + define void @stack_fold_vfmadd132sdm_int_vfmadd132sdr_int_test() #0 { ret void } + define void @stack_fold_vfmadd132ssm_vfmadd132ssr_test() #0 { ret void } + define void @stack_fold_vfmadd132ssm_int_vfmadd132ssr_int_test() #0 { ret void } + define void @stack_fold_vfmadd213pdym_vfmadd213pdyr_test() #0 { ret void } + define void @stack_fold_vfmadd213pdm_vfmadd213pdr_test() #0 { ret void } + define void @stack_fold_vfmadd213psym_vfmadd213psyr_test() #0 { ret void } + define void @stack_fold_vfmadd213psm_vfmadd213psr_test() #0 { ret void } + define void @stack_fold_vfmadd213sdm_vfmadd213sdr_test() #0 { ret void } + define void @stack_fold_vfmadd213sdm_int_vfmadd213sdr_int_test() #0 { ret void } + define void @stack_fold_vfmadd213ssm_vfmadd213ssr_test() #0 { ret void } + define void @stack_fold_vfmadd213ssm_int_vfmadd213ssr_int_test() #0 { ret void } + define void @stack_fold_vfmadd231pdym_vfmadd231pdyr_test() #0 { ret void } + define void @stack_fold_vfmadd231pdm_vfmadd231pdr_test() #0 { ret void } + define void @stack_fold_vfmadd231psym_vfmadd231psyr_test() #0 { ret void } + define void @stack_fold_vfmadd231psm_vfmadd231psr_test() #0 { ret void } + define void @stack_fold_vfmadd231sdm_vfmadd231sdr_test() #0 { ret void } + define void @stack_fold_vfmadd231sdm_int_vfmadd231sdr_int_test() #0 { ret void } + define void @stack_fold_vfmadd231ssm_vfmadd231ssr_test() #0 { ret void } + define void @stack_fold_vfmadd231ssm_int_vfmadd231ssr_int_test() #0 { ret void } + define void @stack_fold_vfmaddpd4yrm_vfmaddpd4yrr_test() #0 { ret void } + define void @stack_fold_vfmaddpd4rm_vfmaddpd4rr_test() #0 { ret void } + define void @stack_fold_vfmaddps4yrm_vfmaddps4yrr_test() #0 { ret void } + define void @stack_fold_vfmaddps4rm_vfmaddps4rr_test() #0 { ret void } + define void @stack_fold_vfmaddsd4rm_vfmaddsd4rr_test() #0 { ret void } + define void @stack_fold_vfmaddsd4rm_int_vfmaddsd4rr_int_test() #0 { ret void } + define void @stack_fold_vfmaddss4rm_vfmaddss4rr_test() #0 { ret void } + define void @stack_fold_vfmaddss4rm_int_vfmaddss4rr_int_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pdym_vfmaddsub132pdyr_test() #0 { ret void } + define void @stack_fold_vfmaddsub132pdm_vfmaddsub132pdr_test() #0 { ret void } + define void @stack_fold_vfmaddsub132psym_vfmaddsub132psyr_test() #0 { ret void } + define void @stack_fold_vfmaddsub132psm_vfmaddsub132psr_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pdym_vfmaddsub213pdyr_test() #0 { ret void } + define void @stack_fold_vfmaddsub213pdm_vfmaddsub213pdr_test() #0 { ret void } + define void @stack_fold_vfmaddsub213psym_vfmaddsub213psyr_test() #0 { ret void } + define void @stack_fold_vfmaddsub213psm_vfmaddsub213psr_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pdym_vfmaddsub231pdyr_test() #0 { ret void } + define void @stack_fold_vfmaddsub231pdm_vfmaddsub231pdr_test() #0 { ret void } + define void @stack_fold_vfmaddsub231psym_vfmaddsub231psyr_test() #0 { ret void } + define void @stack_fold_vfmaddsub231psm_vfmaddsub231psr_test() #0 { ret void } + define void @stack_fold_vfmaddsubpd4yrm_vfmaddsubpd4yrr_test() #0 { ret void } + define void @stack_fold_vfmaddsubpd4rm_vfmaddsubpd4rr_test() #0 { ret void } + define void @stack_fold_vfmaddsubps4yrm_vfmaddsubps4yrr_test() #0 { ret void } + define void @stack_fold_vfmaddsubps4rm_vfmaddsubps4rr_test() #0 { ret void } + define void @stack_fold_vfmsub132pdym_vfmsub132pdyr_test() #0 { ret void } + define void @stack_fold_vfmsub132pdm_vfmsub132pdr_test() #0 { ret void } + define void @stack_fold_vfmsub132psym_vfmsub132psyr_test() #0 { ret void } + define void @stack_fold_vfmsub132psm_vfmsub132psr_test() #0 { ret void } + define void @stack_fold_vfmsub132sdm_vfmsub132sdr_test() #0 { ret void } + define void @stack_fold_vfmsub132sdm_int_vfmsub132sdr_int_test() #0 { ret void } + define void @stack_fold_vfmsub132ssm_vfmsub132ssr_test() #0 { ret void } + define void @stack_fold_vfmsub132ssm_int_vfmsub132ssr_int_test() #0 { ret void } + define void @stack_fold_vfmsub213pdym_vfmsub213pdyr_test() #0 { ret void } + define void @stack_fold_vfmsub213pdm_vfmsub213pdr_test() #0 { ret void } + define void @stack_fold_vfmsub213psym_vfmsub213psyr_test() #0 { ret void } + define void @stack_fold_vfmsub213psm_vfmsub213psr_test() #0 { ret void } + define void @stack_fold_vfmsub213sdm_vfmsub213sdr_test() #0 { ret void } + define void @stack_fold_vfmsub213sdm_int_vfmsub213sdr_int_test() #0 { ret void } + define void @stack_fold_vfmsub213ssm_vfmsub213ssr_test() #0 { ret void } + define void @stack_fold_vfmsub213ssm_int_vfmsub213ssr_int_test() #0 { ret void } + define void @stack_fold_vfmsub231pdym_vfmsub231pdyr_test() #0 { ret void } + define void @stack_fold_vfmsub231pdm_vfmsub231pdr_test() #0 { ret void } + define void @stack_fold_vfmsub231psym_vfmsub231psyr_test() #0 { ret void } + define void @stack_fold_vfmsub231psm_vfmsub231psr_test() #0 { ret void } + define void @stack_fold_vfmsub231sdm_vfmsub231sdr_test() #0 { ret void } + define void @stack_fold_vfmsub231sdm_int_vfmsub231sdr_int_test() #0 { ret void } + define void @stack_fold_vfmsub231ssm_vfmsub231ssr_test() #0 { ret void } + define void @stack_fold_vfmsub231ssm_int_vfmsub231ssr_int_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pdym_vfmsubadd132pdyr_test() #0 { ret void } + define void @stack_fold_vfmsubadd132pdm_vfmsubadd132pdr_test() #0 { ret void } + define void @stack_fold_vfmsubadd132psym_vfmsubadd132psyr_test() #0 { ret void } + define void @stack_fold_vfmsubadd132psm_vfmsubadd132psr_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pdym_vfmsubadd213pdyr_test() #0 { ret void } + define void @stack_fold_vfmsubadd213pdm_vfmsubadd213pdr_test() #0 { ret void } + define void @stack_fold_vfmsubadd213psym_vfmsubadd213psyr_test() #0 { ret void } + define void @stack_fold_vfmsubadd213psm_vfmsubadd213psr_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pdym_vfmsubadd231pdyr_test() #0 { ret void } + define void @stack_fold_vfmsubadd231pdm_vfmsubadd231pdr_test() #0 { ret void } + define void @stack_fold_vfmsubadd231psym_vfmsubadd231psyr_test() #0 { ret void } + define void @stack_fold_vfmsubadd231psm_vfmsubadd231psr_test() #0 { ret void } + define void @stack_fold_vfmsubaddpd4yrm_vfmsubaddpd4yrr_test() #0 { ret void } + define void @stack_fold_vfmsubaddpd4rm_vfmsubaddpd4rr_test() #0 { ret void } + define void @stack_fold_vfmsubaddps4yrm_vfmsubaddps4yrr_test() #0 { ret void } + define void @stack_fold_vfmsubaddps4rm_vfmsubaddps4rr_test() #0 { ret void } + define void @stack_fold_vfmsubpd4yrm_vfmsubpd4yrr_test() #0 { ret void } + define void @stack_fold_vfmsubpd4rm_vfmsubpd4rr_test() #0 { ret void } + define void @stack_fold_vfmsubps4yrm_vfmsubps4yrr_test() #0 { ret void } + define void @stack_fold_vfmsubps4rm_vfmsubps4rr_test() #0 { ret void } + define void @stack_fold_vfmsubsd4rm_vfmsubsd4rr_test() #0 { ret void } + define void @stack_fold_vfmsubsd4rm_int_vfmsubsd4rr_int_test() #0 { ret void } + define void @stack_fold_vfmsubss4rm_vfmsubss4rr_test() #0 { ret void } + define void @stack_fold_vfmsubss4rm_int_vfmsubss4rr_int_test() #0 { ret void } + define void @stack_fold_vfnmadd132pdym_vfnmadd132pdyr_test() #0 { ret void } + define void @stack_fold_vfnmadd132pdm_vfnmadd132pdr_test() #0 { ret void } + define void @stack_fold_vfnmadd132psym_vfnmadd132psyr_test() #0 { ret void } + define void @stack_fold_vfnmadd132psm_vfnmadd132psr_test() #0 { ret void } + define void @stack_fold_vfnmadd132sdm_vfnmadd132sdr_test() #0 { ret void } + define void @stack_fold_vfnmadd132sdm_int_vfnmadd132sdr_int_test() #0 { ret void } + define void @stack_fold_vfnmadd132ssm_vfnmadd132ssr_test() #0 { ret void } + define void @stack_fold_vfnmadd132ssm_int_vfnmadd132ssr_int_test() #0 { ret void } + define void @stack_fold_vfnmadd213pdym_vfnmadd213pdyr_test() #0 { ret void } + define void @stack_fold_vfnmadd213pdm_vfnmadd213pdr_test() #0 { ret void } + define void @stack_fold_vfnmadd213psym_vfnmadd213psyr_test() #0 { ret void } + define void @stack_fold_vfnmadd213psm_vfnmadd213psr_test() #0 { ret void } + define void @stack_fold_vfnmadd213sdm_vfnmadd213sdr_test() #0 { ret void } + define void @stack_fold_vfnmadd213sdm_int_vfnmadd213sdr_int_test() #0 { ret void } + define void @stack_fold_vfnmadd213ssm_vfnmadd213ssr_test() #0 { ret void } + define void @stack_fold_vfnmadd213ssm_int_vfnmadd213ssr_int_test() #0 { ret void } + define void @stack_fold_vfnmadd231pdym_vfnmadd231pdyr_test() #0 { ret void } + define void @stack_fold_vfnmadd231pdm_vfnmadd231pdr_test() #0 { ret void } + define void @stack_fold_vfnmadd231psym_vfnmadd231psyr_test() #0 { ret void } + define void @stack_fold_vfnmadd231psm_vfnmadd231psr_test() #0 { ret void } + define void @stack_fold_vfnmadd231sdm_vfnmadd231sdr_test() #0 { ret void } + define void @stack_fold_vfnmadd231sdm_int_vfnmadd231sdr_int_test() #0 { ret void } + define void @stack_fold_vfnmadd231ssm_vfnmadd231ssr_test() #0 { ret void } + define void @stack_fold_vfnmadd231ssm_int_vfnmadd231ssr_int_test() #0 { ret void } + define void @stack_fold_vfnmaddpd4yrm_vfnmaddpd4yrr_test() #0 { ret void } + define void @stack_fold_vfnmaddpd4rm_vfnmaddpd4rr_test() #0 { ret void } + define void @stack_fold_vfnmaddps4yrm_vfnmaddps4yrr_test() #0 { ret void } + define void @stack_fold_vfnmaddps4rm_vfnmaddps4rr_test() #0 { ret void } + define void @stack_fold_vfnmaddsd4rm_vfnmaddsd4rr_test() #0 { ret void } + define void @stack_fold_vfnmaddsd4rm_int_vfnmaddsd4rr_int_test() #0 { ret void } + define void @stack_fold_vfnmaddss4rm_vfnmaddss4rr_test() #0 { ret void } + define void @stack_fold_vfnmaddss4rm_int_vfnmaddss4rr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub132pdym_vfnmsub132pdyr_test() #0 { ret void } + define void @stack_fold_vfnmsub132pdm_vfnmsub132pdr_test() #0 { ret void } + define void @stack_fold_vfnmsub132psym_vfnmsub132psyr_test() #0 { ret void } + define void @stack_fold_vfnmsub132psm_vfnmsub132psr_test() #0 { ret void } + define void @stack_fold_vfnmsub132sdm_vfnmsub132sdr_test() #0 { ret void } + define void @stack_fold_vfnmsub132sdm_int_vfnmsub132sdr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub132ssm_vfnmsub132ssr_test() #0 { ret void } + define void @stack_fold_vfnmsub132ssm_int_vfnmsub132ssr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub213pdym_vfnmsub213pdyr_test() #0 { ret void } + define void @stack_fold_vfnmsub213pdm_vfnmsub213pdr_test() #0 { ret void } + define void @stack_fold_vfnmsub213psym_vfnmsub213psyr_test() #0 { ret void } + define void @stack_fold_vfnmsub213psm_vfnmsub213psr_test() #0 { ret void } + define void @stack_fold_vfnmsub213sdm_vfnmsub213sdr_test() #0 { ret void } + define void @stack_fold_vfnmsub213sdm_int_vfnmsub213sdr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub213ssm_vfnmsub213ssr_test() #0 { ret void } + define void @stack_fold_vfnmsub213ssm_int_vfnmsub213ssr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub231pdym_vfnmsub231pdyr_test() #0 { ret void } + define void @stack_fold_vfnmsub231pdm_vfnmsub231pdr_test() #0 { ret void } + define void @stack_fold_vfnmsub231psym_vfnmsub231psyr_test() #0 { ret void } + define void @stack_fold_vfnmsub231psm_vfnmsub231psr_test() #0 { ret void } + define void @stack_fold_vfnmsub231sdm_vfnmsub231sdr_test() #0 { ret void } + define void @stack_fold_vfnmsub231sdm_int_vfnmsub231sdr_int_test() #0 { ret void } + define void @stack_fold_vfnmsub231ssm_vfnmsub231ssr_test() #0 { ret void } + define void @stack_fold_vfnmsub231ssm_int_vfnmsub231ssr_int_test() #0 { ret void } + define void @stack_fold_vfnmsubpd4yrm_vfnmsubpd4yrr_test() #0 { ret void } + define void @stack_fold_vfnmsubpd4rm_vfnmsubpd4rr_test() #0 { ret void } + define void @stack_fold_vfnmsubps4yrm_vfnmsubps4yrr_test() #0 { ret void } + define void @stack_fold_vfnmsubps4rm_vfnmsubps4rr_test() #0 { ret void } + define void @stack_fold_vfnmsubsd4rm_vfnmsubsd4rr_test() #0 { ret void } + define void @stack_fold_vfnmsubsd4rm_int_vfnmsubsd4rr_int_test() #0 { ret void } + define void @stack_fold_vfnmsubss4rm_vfnmsubss4rr_test() #0 { ret void } + define void @stack_fold_vfnmsubss4rm_int_vfnmsubss4rr_int_test() #0 { ret void } + define void @stack_fold_vpcmovyrrm_vpcmovyrrr_test() #0 { ret void } + define void @stack_fold_vpcmovrrm_vpcmovrrr_test() #0 { ret void } + define void @stack_fold_vpermil2pdyrm_vpermil2pdyrr_test() #0 { ret void } + define void @stack_fold_vpermil2pdrm_vpermil2pdrr_test() #0 { ret void } + define void @stack_fold_vpermil2psyrm_vpermil2psyrr_test() #0 { ret void } + define void @stack_fold_vpermil2psrm_vpermil2psrr_test() #0 { ret void } + define void @stack_fold_vppermrrm_vppermrrr_test() #0 { ret void } +... +--- +name: stack_fold_bndmovmr32mr_bndmovmrrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: bndr } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_bndmovmr32mr_bndmovmrrr_test + ; CHECK: BNDMOVMR32mr + %0 = BNDMOVMRrr undef %bnd1 + INLINEASM $nop, 1, 12, implicit-def %bnd0, 12, implicit-def %bnd1, 12, implicit-def %bnd2, 12, implicit-def %bnd3 + BNDMOVMR64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_mmx_movd64from64rm_mmx_movd64from64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_mmx_movd64from64rm_mmx_movd64from64rr_test + ; CHECK: MMX_MOVD64from64rm + %0 = MMX_MOVD64from64rr undef %mm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_mmx_movd64mr_mmx_movd64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_mmx_movd64mr_mmx_movd64rr_test + ; CHECK: MMX_MOVD64mr + %0 = MMX_MOVD64rr undef %eax + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + MMX_MOVD64from64rm %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_mmx_movq64mr_mmx_movq64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_mmx_movq64mr_mmx_movq64rr_test + ; CHECK: MMX_MOVQ64mr + %0 = MMX_MOVQ64rr undef %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + MMX_MOVD64from64rm %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vcvtps2phymr_vcvtps2phyrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vcvtps2phymr_vcvtps2phyrr_test + ; CHECK: VCVTPS2PHYmr + %0 = VCVTPS2PHYrr undef %ymm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vcvtps2phmr_vcvtps2phrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vcvtps2phmr_vcvtps2phrr_test + ; CHECK: VCVTPS2PHmr + %0 = VCVTPS2PHrr undef %xmm1, 0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adox32rm_adox32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx, %eflags + + ; CHECK-LABEL: name: stack_fold_adox32rm_adox32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADOX32rm + %eax = ADOX32rr %1, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_adox64rm_adox64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx, %eflags + + ; CHECK-LABEL: name: stack_fold_adox64rm_adox64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADOX64rm + %rax = ADOX64rr %1, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_bextr32rm_bextr32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_bextr32rm_bextr32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BEXTR32rm + %eax = BEXTR32rr %1, undef %ecx, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_bextr64rm_bextr64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_bextr64rm_bextr64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BEXTR64rm + %rax = BEXTR64rr %1, undef %rcx, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_bextri32mi_bextri32ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_bextri32mi_bextri32ri_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BEXTRI32mi + %eax = BEXTRI32ri %1, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_bextri64mi_bextri64ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_bextri64mi_bextri64ri_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BEXTRI64mi + %rax = BEXTRI64ri %1, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blcfill32rm_blcfill32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_blcfill32rm_blcfill32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLCFILL32rm + %eax = BLCFILL32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blcfill64rm_blcfill64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_blcfill64rm_blcfill64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLCFILL64rm + %rax = BLCFILL64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blci32rm_blci32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_blci32rm_blci32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLCI32rm + %eax = BLCI32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blci64rm_blci64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_blci64rm_blci64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLCI64rm + %rax = BLCI64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blcic32rm_blcic32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_blcic32rm_blcic32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLCIC32rm + %eax = BLCIC32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blcic64rm_blcic64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_blcic64rm_blcic64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLCIC64rm + %rax = BLCIC64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blcmsk32rm_blcmsk32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_blcmsk32rm_blcmsk32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLCMSK32rm + %eax = BLCMSK32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blcmsk64rm_blcmsk64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_blcmsk64rm_blcmsk64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLCMSK64rm + %rax = BLCMSK64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blcs32rm_blcs32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_blcs32rm_blcs32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLCS32rm + %eax = BLCS32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blcs64rm_blcs64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_blcs64rm_blcs64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLCS64rm + %rax = BLCS64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blsfill32rm_blsfill32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_blsfill32rm_blsfill32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLSFILL32rm + %eax = BLSFILL32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blsfill64rm_blsfill64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_blsfill64rm_blsfill64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLSFILL64rm + %rax = BLSFILL64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blsi32rm_blsi32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_blsi32rm_blsi32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLSI32rm + %eax = BLSI32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blsi64rm_blsi64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_blsi64rm_blsi64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLSI64rm + %rax = BLSI64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blsic32rm_blsic32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_blsic32rm_blsic32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLSIC32rm + %eax = BLSIC32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blsic64rm_blsic64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_blsic64rm_blsic64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLSIC64rm + %rax = BLSIC64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blsmsk32rm_blsmsk32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_blsmsk32rm_blsmsk32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLSMSK32rm + %eax = BLSMSK32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blsmsk64rm_blsmsk64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_blsmsk64rm_blsmsk64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLSMSK64rm + %rax = BLSMSK64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blsr32rm_blsr32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_blsr32rm_blsr32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLSR32rm + %eax = BLSR32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_blsr64rm_blsr64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_blsr64rm_blsr64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BLSR64rm + %rax = BLSR64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_bndcl32rm_bndcl32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_bndcl32rm_bndcl32rr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BNDCL32rm + BNDCL32rr undef %bnd0, %1 + RET 0 +... +--- +name: stack_fold_bndcl64rm_bndcl64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_bndcl64rm_bndcl64rr_test + %1 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BNDCL64rm + BNDCL64rr undef %bnd0, %1 + RET 0 +... +--- +name: stack_fold_bndcn32rm_bndcn32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_bndcn32rm_bndcn32rr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BNDCN32rm + BNDCN32rr undef %bnd0, %1 + RET 0 +... +--- +name: stack_fold_bndcn64rm_bndcn64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_bndcn64rm_bndcn64rr_test + %1 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BNDCN64rm + BNDCN64rr undef %bnd0, %1 + RET 0 +... +--- +name: stack_fold_bndcu32rm_bndcu32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_bndcu32rm_bndcu32rr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BNDCU32rm + BNDCU32rr undef %bnd0, %1 + RET 0 +... +--- +name: stack_fold_bndcu64rm_bndcu64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_bndcu64rm_bndcu64rr_test + %1 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BNDCU64rm + BNDCU64rr undef %bnd0, %1 + RET 0 +... +--- +name: stack_fold_bndmovrm32rm_bndmovrmrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: bndr } +liveins: + - { reg: '%bnd1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bnd1 + + ; CHECK-LABEL: name: stack_fold_bndmovrm32rm_bndmovrmrr_test + %1 = COPY %bnd1 + INLINEASM $nop, 1, 12, implicit-def %bnd0, 12, implicit-def %bnd1, 12, implicit-def %bnd2, 12, implicit-def %bnd3 + ; CHECK: BNDMOVRM32rm + %bnd0 = BNDMOVRMrr %1 + RET 0 +... +--- +name: stack_fold_bzhi32rm_bzhi32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_bzhi32rm_bzhi32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BZHI32rm + %eax = BZHI32rr %1, undef %ecx, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_bzhi64rm_bzhi64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_bzhi64rm_bzhi64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BZHI64rm + %rax = BZHI64rr %1, undef %rcx, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_lzcnt16rm_lzcnt16rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_lzcnt16rm_lzcnt16rr_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LZCNT16rm + %ax = LZCNT16rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_lzcnt32rm_lzcnt32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_lzcnt32rm_lzcnt32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LZCNT32rm + %eax = LZCNT32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_lzcnt64rm_lzcnt64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_lzcnt64rm_lzcnt64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LZCNT64rm + %rax = LZCNT64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_mmx_movd64rm_mmx_movd64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_mmx_movd64rm_mmx_movd64rr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MMX_MOVD64rm + %mm0 = MMX_MOVD64rr %1 + RET 0 +... +--- +name: stack_fold_mmx_movd64to64rm_mmx_movd64to64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_mmx_movd64to64rm_mmx_movd64to64rr_test + %1 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MMX_MOVD64to64rm + %mm0 = MMX_MOVD64to64rr %1 + RET 0 +... +--- +name: stack_fold_mmx_movq64rm_mmx_movq64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_mmx_movq64rm_mmx_movq64rr_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_MOVQ64rm + %mm0 = MMX_MOVQ64rr %1 + RET 0 +... +--- +name: stack_fold_mmx_pshufwmi_mmx_pshufwri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_mmx_pshufwmi_mmx_pshufwri_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSHUFWmi + %mm0 = MMX_PSHUFWri %1, 0 + RET 0 +... +--- +name: stack_fold_pf2idrm_pf2idrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_pf2idrm_pf2idrr_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PF2IDrm + %mm0 = PF2IDrr %1 + RET 0 +... +--- +name: stack_fold_pf2iwrm_pf2iwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_pf2iwrm_pf2iwrr_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PF2IWrm + %mm0 = PF2IWrr %1 + RET 0 +... +--- +name: stack_fold_pfrcprm_pfrcprr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_pfrcprm_pfrcprr_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFRCPrm + %mm0 = PFRCPrr %1 + RET 0 +... +--- +name: stack_fold_pfrsqrtrm_pfrsqrtrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_pfrsqrtrm_pfrsqrtrr_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFRSQRTrm + %mm0 = PFRSQRTrr %1 + RET 0 +... +--- +name: stack_fold_pi2fdrm_pi2fdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_pi2fdrm_pi2fdrr_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PI2FDrm + %mm0 = PI2FDrr %1 + RET 0 +... +--- +name: stack_fold_pi2fwrm_pi2fwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_pi2fwrm_pi2fwrr_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PI2FWrm + %mm0 = PI2FWrr %1 + RET 0 +... +--- +name: stack_fold_popcnt16rm_popcnt16rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_popcnt16rm_popcnt16rr_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: POPCNT16rm + %ax = POPCNT16rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_popcnt32rm_popcnt32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_popcnt32rm_popcnt32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: POPCNT32rm + %eax = POPCNT32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_popcnt64rm_popcnt64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_popcnt64rm_popcnt64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: POPCNT64rm + %rax = POPCNT64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_pswapdrm_pswapdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_pswapdrm_pswapdrr_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PSWAPDrm + %mm0 = PSWAPDrr %1 + RET 0 +... +--- +name: stack_fold_rorx32mi_rorx32ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_rorx32mi_rorx32ri_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RORX32mi + %eax = RORX32ri %1, 0 + RET 0 +... +--- +name: stack_fold_rorx64mi_rorx64ri_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_rorx64mi_rorx64ri_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RORX64mi + %rax = RORX64ri %1, 0 + RET 0 +... +--- +name: stack_fold_sarx32rm_sarx32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_sarx32rm_sarx32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SARX32rm + %eax = SARX32rr %1, undef %ecx + RET 0 +... +--- +name: stack_fold_sarx64rm_sarx64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_sarx64rm_sarx64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SARX64rm + %rax = SARX64rr %1, undef %rcx + RET 0 +... +--- +name: stack_fold_shlx32rm_shlx32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_shlx32rm_shlx32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHLX32rm + %eax = SHLX32rr %1, undef %ecx + RET 0 +... +--- +name: stack_fold_shlx64rm_shlx64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_shlx64rm_shlx64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHLX64rm + %rax = SHLX64rr %1, undef %rcx + RET 0 +... +--- +name: stack_fold_shrx32rm_shrx32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_shrx32rm_shrx32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHRX32rm + %eax = SHRX32rr %1, undef %ecx + RET 0 +... +--- +name: stack_fold_shrx64rm_shrx64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_shrx64rm_shrx64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHRX64rm + %rax = SHRX64rr %1, undef %rcx + RET 0 +... +--- +name: stack_fold_t1mskc32rm_t1mskc32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_t1mskc32rm_t1mskc32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: T1MSKC32rm + %eax = T1MSKC32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_t1mskc64rm_t1mskc64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_t1mskc64rm_t1mskc64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: T1MSKC64rm + %rax = T1MSKC64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_tzcnt16rm_tzcnt16rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_tzcnt16rm_tzcnt16rr_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TZCNT16rm + %ax = TZCNT16rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_tzcnt32rm_tzcnt32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_tzcnt32rm_tzcnt32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TZCNT32rm + %eax = TZCNT32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_tzcnt64rm_tzcnt64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_tzcnt64rm_tzcnt64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TZCNT64rm + %rax = TZCNT64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_tzmsk32rm_tzmsk32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_tzmsk32rm_tzmsk32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TZMSK32rm + %eax = TZMSK32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_tzmsk64rm_tzmsk64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_tzmsk64rm_tzmsk64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TZMSK64rm + %rax = TZMSK64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vcvtph2psyrm_vcvtph2psyrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtph2psyrm_vcvtph2psyrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPH2PSYrm + %ymm0 = VCVTPH2PSYrr %1 + RET 0 +... +--- +name: stack_fold_vcvtph2psrm_vcvtph2psrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vcvtph2psrm_vcvtph2psrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VCVTPH2PSrm + %xmm0 = VCVTPH2PSrr %1 + RET 0 +... +--- +name: stack_fold_vfrczpdrm_vfrczpdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vfrczpdrm_vfrczpdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFRCZPDrm + %xmm0 = VFRCZPDrr %1 + RET 0 +... +--- +name: stack_fold_vfrczpdrmy_vfrczpdrry_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vfrczpdrmy_vfrczpdrry_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFRCZPDrmY + %ymm0 = VFRCZPDrrY %1 + RET 0 +... +--- +name: stack_fold_vfrczpsrm_vfrczpsrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vfrczpsrm_vfrczpsrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFRCZPSrm + %xmm0 = VFRCZPSrr %1 + RET 0 +... +--- +name: stack_fold_vfrczpsrmy_vfrczpsrry_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr256 } +liveins: + - { reg: '%ymm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm1 + + ; CHECK-LABEL: name: stack_fold_vfrczpsrmy_vfrczpsrry_test + %1 = COPY %ymm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFRCZPSrmY + %ymm0 = VFRCZPSrrY %1 + RET 0 +... +--- +name: stack_fold_vfrczsdrm_vfrczsdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vfrczsdrm_vfrczsdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFRCZSDrm + %xmm0 = VFRCZSDrr %1 + RET 0 +... +--- +name: stack_fold_vfrczssrm_vfrczssrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vfrczssrm_vfrczssrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFRCZSSrm + %xmm0 = VFRCZSSrr %1 + RET 0 +... +--- +name: stack_fold_vphaddbdrm_vphaddbdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphaddbdrm_vphaddbdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDBDrm + %xmm0 = VPHADDBDrr %1 + RET 0 +... +--- +name: stack_fold_vphaddbqrm_vphaddbqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphaddbqrm_vphaddbqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDBQrm + %xmm0 = VPHADDBQrr %1 + RET 0 +... +--- +name: stack_fold_vphaddbwrm_vphaddbwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphaddbwrm_vphaddbwrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDBWrm + %xmm0 = VPHADDBWrr %1 + RET 0 +... +--- +name: stack_fold_vphadddqrm_vphadddqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphadddqrm_vphadddqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDDQrm + %xmm0 = VPHADDDQrr %1 + RET 0 +... +--- +name: stack_fold_vphaddubdrm_vphaddubdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphaddubdrm_vphaddubdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDUBDrm + %xmm0 = VPHADDUBDrr %1 + RET 0 +... +--- +name: stack_fold_vphaddubqrm_vphaddubqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphaddubqrm_vphaddubqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDUBQrm + %xmm0 = VPHADDUBQrr %1 + RET 0 +... +--- +name: stack_fold_vphaddubwrm_vphaddubwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphaddubwrm_vphaddubwrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDUBWrm + %xmm0 = VPHADDUBWrr %1 + RET 0 +... +--- +name: stack_fold_vphaddudqrm_vphaddudqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphaddudqrm_vphaddudqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDUDQrm + %xmm0 = VPHADDUDQrr %1 + RET 0 +... +--- +name: stack_fold_vphadduwdrm_vphadduwdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphadduwdrm_vphadduwdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDUWDrm + %xmm0 = VPHADDUWDrr %1 + RET 0 +... +--- +name: stack_fold_vphadduwqrm_vphadduwqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphadduwqrm_vphadduwqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDUWQrm + %xmm0 = VPHADDUWQrr %1 + RET 0 +... +--- +name: stack_fold_vphaddwdrm_vphaddwdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphaddwdrm_vphaddwdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDWDrm + %xmm0 = VPHADDWDrr %1 + RET 0 +... +--- +name: stack_fold_vphaddwqrm_vphaddwqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphaddwqrm_vphaddwqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHADDWQrm + %xmm0 = VPHADDWQrr %1 + RET 0 +... +--- +name: stack_fold_vphsubbwrm_vphsubbwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphsubbwrm_vphsubbwrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHSUBBWrm + %xmm0 = VPHSUBBWrr %1 + RET 0 +... +--- +name: stack_fold_vphsubdqrm_vphsubdqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphsubdqrm_vphsubdqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHSUBDQrm + %xmm0 = VPHSUBDQrr %1 + RET 0 +... +--- +name: stack_fold_vphsubwdrm_vphsubwdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vphsubwdrm_vphsubwdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPHSUBWDrm + %xmm0 = VPHSUBWDrr %1 + RET 0 +... +--- +name: stack_fold_vprotbmi_vprotbri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprotbmi_vprotbri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTBmi + %xmm0 = VPROTBri %1, 0 + RET 0 +... +--- +name: stack_fold_vprotbmr_vprotbrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprotbmr_vprotbrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTBmr + %xmm0 = VPROTBrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_vprotdmi_vprotdri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprotdmi_vprotdri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTDmi + %xmm0 = VPROTDri %1, 0 + RET 0 +... +--- +name: stack_fold_vprotdmr_vprotdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprotdmr_vprotdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTDmr + %xmm0 = VPROTDrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_vprotqmi_vprotqri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprotqmi_vprotqri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTQmi + %xmm0 = VPROTQri %1, 0 + RET 0 +... +--- +name: stack_fold_vprotqmr_vprotqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprotqmr_vprotqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTQmr + %xmm0 = VPROTQrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_vprotwmi_vprotwri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprotwmi_vprotwri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTWmi + %xmm0 = VPROTWri %1, 0 + RET 0 +... +--- +name: stack_fold_vprotwmr_vprotwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vprotwmr_vprotwrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTWmr + %xmm0 = VPROTWrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_vpshabmr_vpshabrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshabmr_vpshabrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHABmr + %xmm0 = VPSHABrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_vpshadmr_vpshadrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshadmr_vpshadrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHADmr + %xmm0 = VPSHADrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_vpshaqmr_vpshaqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshaqmr_vpshaqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHAQmr + %xmm0 = VPSHAQrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_vpshawmr_vpshawrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshawmr_vpshawrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHAWmr + %xmm0 = VPSHAWrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_vpshlbmr_vpshlbrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshlbmr_vpshlbrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHLBmr + %xmm0 = VPSHLBrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_vpshldmr_vpshldrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshldmr_vpshldrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHLDmr + %xmm0 = VPSHLDrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_vpshlqmr_vpshlqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshlqmr_vpshlqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHLQmr + %xmm0 = VPSHLQrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_vpshlwmr_vpshlwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_vpshlwmr_vpshlwrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHLWmr + %xmm0 = VPSHLWrr %1, undef %xmm2 + RET 0 +... +--- +name: stack_fold_adcx32rm_adcx32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_adcx32rm_adcx32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADCX32rm + %eax = ADCX32rr undef %ebx, %2, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_adcx64rm_adcx64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_adcx64rm_adcx64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADCX64rm + %rax = ADCX64rr undef %rbx, %2, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_andn32rm_andn32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_andn32rm_andn32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ANDN32rm + %eax = ANDN32rr undef %ebx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_andn64rm_andn64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_andn64rm_andn64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ANDN64rm + %rax = ANDN64rr undef %rbx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmova16rm_cmova16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmova16rm_cmova16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVA16rm + %ax = CMOVA16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmova32rm_cmova32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmova32rm_cmova32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVA32rm + %eax = CMOVA32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmova64rm_cmova64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmova64rm_cmova64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVA64rm + %rax = CMOVA64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovae16rm_cmovae16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovae16rm_cmovae16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVAE16rm + %ax = CMOVAE16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovae32rm_cmovae32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovae32rm_cmovae32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVAE32rm + %eax = CMOVAE32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovae64rm_cmovae64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovae64rm_cmovae64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVAE64rm + %rax = CMOVAE64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovb16rm_cmovb16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovb16rm_cmovb16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVB16rm + %ax = CMOVB16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovb32rm_cmovb32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovb32rm_cmovb32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVB32rm + %eax = CMOVB32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovb64rm_cmovb64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovb64rm_cmovb64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVB64rm + %rax = CMOVB64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovbe16rm_cmovbe16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovbe16rm_cmovbe16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVBE16rm + %ax = CMOVBE16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovbe32rm_cmovbe32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovbe32rm_cmovbe32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVBE32rm + %eax = CMOVBE32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovbe64rm_cmovbe64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovbe64rm_cmovbe64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVBE64rm + %rax = CMOVBE64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmove16rm_cmove16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmove16rm_cmove16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVE16rm + %ax = CMOVE16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmove32rm_cmove32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmove32rm_cmove32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVE32rm + %eax = CMOVE32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmove64rm_cmove64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmove64rm_cmove64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVE64rm + %rax = CMOVE64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovg16rm_cmovg16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovg16rm_cmovg16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVG16rm + %ax = CMOVG16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovg32rm_cmovg32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovg32rm_cmovg32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVG32rm + %eax = CMOVG32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovg64rm_cmovg64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovg64rm_cmovg64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVG64rm + %rax = CMOVG64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovge16rm_cmovge16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovge16rm_cmovge16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVGE16rm + %ax = CMOVGE16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovge32rm_cmovge32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovge32rm_cmovge32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVGE32rm + %eax = CMOVGE32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovge64rm_cmovge64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovge64rm_cmovge64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVGE64rm + %rax = CMOVGE64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovl16rm_cmovl16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovl16rm_cmovl16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVL16rm + %ax = CMOVL16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovl32rm_cmovl32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovl32rm_cmovl32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVL32rm + %eax = CMOVL32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovl64rm_cmovl64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovl64rm_cmovl64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVL64rm + %rax = CMOVL64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovle16rm_cmovle16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovle16rm_cmovle16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVLE16rm + %ax = CMOVLE16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovle32rm_cmovle32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovle32rm_cmovle32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVLE32rm + %eax = CMOVLE32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovle64rm_cmovle64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovle64rm_cmovle64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVLE64rm + %rax = CMOVLE64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovne16rm_cmovne16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovne16rm_cmovne16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNE16rm + %ax = CMOVNE16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovne32rm_cmovne32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovne32rm_cmovne32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNE32rm + %eax = CMOVNE32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovne64rm_cmovne64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovne64rm_cmovne64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNE64rm + %rax = CMOVNE64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovno16rm_cmovno16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovno16rm_cmovno16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNO16rm + %ax = CMOVNO16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovno32rm_cmovno32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovno32rm_cmovno32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNO32rm + %eax = CMOVNO32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovno64rm_cmovno64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovno64rm_cmovno64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNO64rm + %rax = CMOVNO64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovnp16rm_cmovnp16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovnp16rm_cmovnp16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNP16rm + %ax = CMOVNP16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovnp32rm_cmovnp32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovnp32rm_cmovnp32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNP32rm + %eax = CMOVNP32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovnp64rm_cmovnp64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovnp64rm_cmovnp64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNP64rm + %rax = CMOVNP64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovns16rm_cmovns16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovns16rm_cmovns16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNS16rm + %ax = CMOVNS16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovns32rm_cmovns32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovns32rm_cmovns32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNS32rm + %eax = CMOVNS32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovns64rm_cmovns64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovns64rm_cmovns64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVNS64rm + %rax = CMOVNS64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovo16rm_cmovo16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovo16rm_cmovo16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVO16rm + %ax = CMOVO16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovo32rm_cmovo32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovo32rm_cmovo32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVO32rm + %eax = CMOVO32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovo64rm_cmovo64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovo64rm_cmovo64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVO64rm + %rax = CMOVO64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovp16rm_cmovp16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovp16rm_cmovp16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVP16rm + %ax = CMOVP16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovp32rm_cmovp32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovp32rm_cmovp32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVP32rm + %eax = CMOVP32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovp64rm_cmovp64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovp64rm_cmovp64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVP64rm + %rax = CMOVP64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovs16rm_cmovs16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovs16rm_cmovs16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVS16rm + %ax = CMOVS16rr undef %bx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovs32rm_cmovs32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovs32rm_cmovs32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVS32rm + %eax = CMOVS32rr undef %ebx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_cmovs64rm_cmovs64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_cmovs64rm_cmovs64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMOVS64rm + %rax = CMOVS64rr undef %rbx, %2, implicit %eflags + RET 0 +... +--- +name: stack_fold_mmx_packssdwirm_mmx_packssdwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_packssdwirm_mmx_packssdwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PACKSSDWirm + %mm0 = MMX_PACKSSDWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_packsswbirm_mmx_packsswbirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_packsswbirm_mmx_packsswbirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PACKSSWBirm + %mm0 = MMX_PACKSSWBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_packuswbirm_mmx_packuswbirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_packuswbirm_mmx_packuswbirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PACKUSWBirm + %mm0 = MMX_PACKUSWBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_paddbirm_mmx_paddbirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_paddbirm_mmx_paddbirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PADDBirm + %mm0 = MMX_PADDBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_padddirm_mmx_padddirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_padddirm_mmx_padddirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PADDDirm + %mm0 = MMX_PADDDirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_paddsbirm_mmx_paddsbirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_paddsbirm_mmx_paddsbirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PADDSBirm + %mm0 = MMX_PADDSBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_paddswirm_mmx_paddswirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_paddswirm_mmx_paddswirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PADDSWirm + %mm0 = MMX_PADDSWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_paddusbirm_mmx_paddusbirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_paddusbirm_mmx_paddusbirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PADDUSBirm + %mm0 = MMX_PADDUSBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_padduswirm_mmx_padduswirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_padduswirm_mmx_padduswirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PADDUSWirm + %mm0 = MMX_PADDUSWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_paddwirm_mmx_paddwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_paddwirm_mmx_paddwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PADDWirm + %mm0 = MMX_PADDWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pandnirm_mmx_pandnirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pandnirm_mmx_pandnirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PANDNirm + %mm0 = MMX_PANDNirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pandirm_mmx_pandirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pandirm_mmx_pandirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PANDirm + %mm0 = MMX_PANDirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pcmpeqbirm_mmx_pcmpeqbirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pcmpeqbirm_mmx_pcmpeqbirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PCMPEQBirm + %mm0 = MMX_PCMPEQBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pcmpeqdirm_mmx_pcmpeqdirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pcmpeqdirm_mmx_pcmpeqdirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PCMPEQDirm + %mm0 = MMX_PCMPEQDirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pcmpeqwirm_mmx_pcmpeqwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pcmpeqwirm_mmx_pcmpeqwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PCMPEQWirm + %mm0 = MMX_PCMPEQWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pcmpgtbirm_mmx_pcmpgtbirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pcmpgtbirm_mmx_pcmpgtbirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PCMPGTBirm + %mm0 = MMX_PCMPGTBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pcmpgtdirm_mmx_pcmpgtdirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pcmpgtdirm_mmx_pcmpgtdirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PCMPGTDirm + %mm0 = MMX_PCMPGTDirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pcmpgtwirm_mmx_pcmpgtwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pcmpgtwirm_mmx_pcmpgtwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PCMPGTWirm + %mm0 = MMX_PCMPGTWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pmaddwdirm_mmx_pmaddwdirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pmaddwdirm_mmx_pmaddwdirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PMADDWDirm + %mm0 = MMX_PMADDWDirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pmulhwirm_mmx_pmulhwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pmulhwirm_mmx_pmulhwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PMULHWirm + %mm0 = MMX_PMULHWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pmullwirm_mmx_pmullwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pmullwirm_mmx_pmullwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PMULLWirm + %mm0 = MMX_PMULLWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_porirm_mmx_porirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_porirm_mmx_porirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PORirm + %mm0 = MMX_PORirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pslldrm_mmx_pslldrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pslldrm_mmx_pslldrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSLLDrm + %mm0 = MMX_PSLLDrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psllqrm_mmx_psllqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psllqrm_mmx_psllqrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSLLQrm + %mm0 = MMX_PSLLQrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psllwrm_mmx_psllwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psllwrm_mmx_psllwrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSLLWrm + %mm0 = MMX_PSLLWrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psradrm_mmx_psradrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psradrm_mmx_psradrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSRADrm + %mm0 = MMX_PSRADrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psrawrm_mmx_psrawrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psrawrm_mmx_psrawrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSRAWrm + %mm0 = MMX_PSRAWrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psrldrm_mmx_psrldrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psrldrm_mmx_psrldrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSRLDrm + %mm0 = MMX_PSRLDrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psrlqrm_mmx_psrlqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psrlqrm_mmx_psrlqrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSRLQrm + %mm0 = MMX_PSRLQrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psrlwrm_mmx_psrlwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psrlwrm_mmx_psrlwrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSRLWrm + %mm0 = MMX_PSRLWrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psubbirm_mmx_psubbirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psubbirm_mmx_psubbirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSUBBirm + %mm0 = MMX_PSUBBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psubdirm_mmx_psubdirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psubdirm_mmx_psubdirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSUBDirm + %mm0 = MMX_PSUBDirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psubsbirm_mmx_psubsbirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psubsbirm_mmx_psubsbirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSUBSBirm + %mm0 = MMX_PSUBSBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psubswirm_mmx_psubswirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psubswirm_mmx_psubswirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSUBSWirm + %mm0 = MMX_PSUBSWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psubusbirm_mmx_psubusbirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psubusbirm_mmx_psubusbirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSUBUSBirm + %mm0 = MMX_PSUBUSBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psubuswirm_mmx_psubuswirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psubuswirm_mmx_psubuswirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSUBUSWirm + %mm0 = MMX_PSUBUSWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psubwirm_mmx_psubwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psubwirm_mmx_psubwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSUBWirm + %mm0 = MMX_PSUBWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_punpckhbwirm_mmx_punpckhbwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_punpckhbwirm_mmx_punpckhbwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PUNPCKHBWirm + %mm0 = MMX_PUNPCKHBWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_punpckhdqirm_mmx_punpckhdqirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_punpckhdqirm_mmx_punpckhdqirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PUNPCKHDQirm + %mm0 = MMX_PUNPCKHDQirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_punpckhwdirm_mmx_punpckhwdirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_punpckhwdirm_mmx_punpckhwdirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PUNPCKHWDirm + %mm0 = MMX_PUNPCKHWDirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_punpcklbwirm_mmx_punpcklbwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_punpcklbwirm_mmx_punpcklbwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PUNPCKLBWirm + %mm0 = MMX_PUNPCKLBWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_punpckldqirm_mmx_punpckldqirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_punpckldqirm_mmx_punpckldqirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PUNPCKLDQirm + %mm0 = MMX_PUNPCKLDQirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_punpcklwdirm_mmx_punpcklwdirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_punpcklwdirm_mmx_punpcklwdirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PUNPCKLWDirm + %mm0 = MMX_PUNPCKLWDirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pxorirm_mmx_pxorirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pxorirm_mmx_pxorirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PXORirm + %mm0 = MMX_PXORirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mulx32rm_mulx32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_mulx32rm_mulx32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MULX32rm + %eax, %ebx = MULX32rr %2, implicit undef %edx + RET 0 +... +--- +name: stack_fold_mulx64rm_mulx64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_mulx64rm_mulx64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MULX64rm + %rax, %rbx = MULX64rr %2, implicit undef %rdx + RET 0 +... +--- +name: stack_fold_pavgusbrm_pavgusbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pavgusbrm_pavgusbrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PAVGUSBrm + %mm0 = PAVGUSBrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pdep32rm_pdep32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_pdep32rm_pdep32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PDEP32rm + %eax = PDEP32rr undef %ebx, %2 + RET 0 +... +--- +name: stack_fold_pdep64rm_pdep64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_pdep64rm_pdep64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PDEP64rm + %rax = PDEP64rr undef %rbx, %2 + RET 0 +... +--- +name: stack_fold_pext32rm_pext32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_pext32rm_pext32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PEXT32rm + %eax = PEXT32rr undef %ebx, %2 + RET 0 +... +--- +name: stack_fold_pext64rm_pext64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_pext64rm_pext64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PEXT64rm + %rax = PEXT64rr undef %rbx, %2 + RET 0 +... +--- +name: stack_fold_pfaccrm_pfaccrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfaccrm_pfaccrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFACCrm + %mm0 = PFACCrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfaddrm_pfaddrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfaddrm_pfaddrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFADDrm + %mm0 = PFADDrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfcmpeqrm_pfcmpeqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfcmpeqrm_pfcmpeqrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFCMPEQrm + %mm0 = PFCMPEQrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfcmpgerm_pfcmpgerr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfcmpgerm_pfcmpgerr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFCMPGErm + %mm0 = PFCMPGErr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfcmpgtrm_pfcmpgtrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfcmpgtrm_pfcmpgtrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFCMPGTrm + %mm0 = PFCMPGTrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfmaxrm_pfmaxrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfmaxrm_pfmaxrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFMAXrm + %mm0 = PFMAXrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfminrm_pfminrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfminrm_pfminrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFMINrm + %mm0 = PFMINrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfmulrm_pfmulrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfmulrm_pfmulrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFMULrm + %mm0 = PFMULrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfnaccrm_pfnaccrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfnaccrm_pfnaccrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFNACCrm + %mm0 = PFNACCrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfpnaccrm_pfpnaccrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfpnaccrm_pfpnaccrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFPNACCrm + %mm0 = PFPNACCrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfrcpit1rm_pfrcpit1rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfrcpit1rm_pfrcpit1rr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFRCPIT1rm + %mm0 = PFRCPIT1rr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfrcpit2rm_pfrcpit2rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfrcpit2rm_pfrcpit2rr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFRCPIT2rm + %mm0 = PFRCPIT2rr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfrsqit1rm_pfrsqit1rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfrsqit1rm_pfrsqit1rr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFRSQIT1rm + %mm0 = PFRSQIT1rr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfsubrrm_pfsubrrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfsubrrm_pfsubrrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFSUBRrm + %mm0 = PFSUBRrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pfsubrm_pfsubrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pfsubrm_pfsubrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PFSUBrm + %mm0 = PFSUBrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_pmulhrwrm_pmulhrwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_pmulhrwrm_pmulhrwrr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: PMULHRWrm + %mm0 = PMULHRWrr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_sha1msg1rm_sha1msg1rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_sha1msg1rm_sha1msg1rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SHA1MSG1rm + %xmm0 = SHA1MSG1rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_sha1msg2rm_sha1msg2rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_sha1msg2rm_sha1msg2rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SHA1MSG2rm + %xmm0 = SHA1MSG2rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_sha1nexterm_sha1nexterr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_sha1nexterm_sha1nexterr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SHA1NEXTErm + %xmm0 = SHA1NEXTErr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_sha1rnds4rmi_sha1rnds4rri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_sha1rnds4rmi_sha1rnds4rri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SHA1RNDS4rmi + %xmm0 = SHA1RNDS4rri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_sha256msg1rm_sha256msg1rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_sha256msg1rm_sha256msg1rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SHA256MSG1rm + %xmm0 = SHA256MSG1rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_sha256msg2rm_sha256msg2rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_sha256msg2rm_sha256msg2rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SHA256MSG2rm + %xmm0 = SHA256MSG2rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_sha256rnds2rm_sha256rnds2rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_sha256rnds2rm_sha256rnds2rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SHA256RNDS2rm + %xmm0 = SHA256RNDS2rr undef %xmm1, %2, implicit undef %xmm0 + RET 0 +... +--- +name: stack_fold_vfmaddpd4ymr_vfmaddpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddpd4ymr_vfmaddpd4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDPD4Ymr + %ymm0 = VFMADDPD4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfmaddpd4mr_vfmaddpd4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddpd4mr_vfmaddpd4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDPD4mr + %xmm0 = VFMADDPD4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmaddps4ymr_vfmaddps4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddps4ymr_vfmaddps4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDPS4Ymr + %ymm0 = VFMADDPS4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfmaddps4mr_vfmaddps4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddps4mr_vfmaddps4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDPS4mr + %xmm0 = VFMADDPS4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmaddsd4mr_vfmaddsd4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddsd4mr_vfmaddsd4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSD4mr + %xmm0 = VFMADDSD4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmaddsd4mr_int_vfmaddsd4rr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddsd4mr_int_vfmaddsd4rr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSD4mr_Int + %xmm0 = VFMADDSD4rr_Int undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmaddss4mr_vfmaddss4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddss4mr_vfmaddss4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSS4mr + %xmm0 = VFMADDSS4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmaddss4mr_int_vfmaddss4rr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddss4mr_int_vfmaddss4rr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSS4mr_Int + %xmm0 = VFMADDSS4rr_Int undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmaddsubpd4ymr_vfmaddsubpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddsubpd4ymr_vfmaddsubpd4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUBPD4Ymr + %ymm0 = VFMADDSUBPD4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfmaddsubpd4mr_vfmaddsubpd4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddsubpd4mr_vfmaddsubpd4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUBPD4mr + %xmm0 = VFMADDSUBPD4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmaddsubps4ymr_vfmaddsubps4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddsubps4ymr_vfmaddsubps4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUBPS4Ymr + %ymm0 = VFMADDSUBPS4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfmaddsubps4mr_vfmaddsubps4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmaddsubps4mr_vfmaddsubps4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUBPS4mr + %xmm0 = VFMADDSUBPS4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmsubaddpd4ymr_vfmsubaddpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubaddpd4ymr_vfmsubaddpd4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADDPD4Ymr + %ymm0 = VFMSUBADDPD4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfmsubaddpd4mr_vfmsubaddpd4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubaddpd4mr_vfmsubaddpd4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADDPD4mr + %xmm0 = VFMSUBADDPD4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmsubaddps4ymr_vfmsubaddps4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubaddps4ymr_vfmsubaddps4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADDPS4Ymr + %ymm0 = VFMSUBADDPS4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfmsubaddps4mr_vfmsubaddps4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubaddps4mr_vfmsubaddps4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADDPS4mr + %xmm0 = VFMSUBADDPS4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmsubpd4ymr_vfmsubpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubpd4ymr_vfmsubpd4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBPD4Ymr + %ymm0 = VFMSUBPD4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfmsubpd4mr_vfmsubpd4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubpd4mr_vfmsubpd4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBPD4mr + %xmm0 = VFMSUBPD4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmsubps4ymr_vfmsubps4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubps4ymr_vfmsubps4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBPS4Ymr + %ymm0 = VFMSUBPS4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfmsubps4mr_vfmsubps4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubps4mr_vfmsubps4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBPS4mr + %xmm0 = VFMSUBPS4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmsubsd4mr_vfmsubsd4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubsd4mr_vfmsubsd4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBSD4mr + %xmm0 = VFMSUBSD4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmsubsd4mr_int_vfmsubsd4rr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubsd4mr_int_vfmsubsd4rr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBSD4mr_Int + %xmm0 = VFMSUBSD4rr_Int undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmsubss4mr_vfmsubss4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubss4mr_vfmsubss4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBSS4mr + %xmm0 = VFMSUBSS4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfmsubss4mr_int_vfmsubss4rr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfmsubss4mr_int_vfmsubss4rr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBSS4mr_Int + %xmm0 = VFMSUBSS4rr_Int undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmaddpd4ymr_vfnmaddpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfnmaddpd4ymr_vfnmaddpd4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDPD4Ymr + %ymm0 = VFNMADDPD4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfnmaddpd4mr_vfnmaddpd4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmaddpd4mr_vfnmaddpd4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDPD4mr + %xmm0 = VFNMADDPD4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmaddps4ymr_vfnmaddps4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfnmaddps4ymr_vfnmaddps4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDPS4Ymr + %ymm0 = VFNMADDPS4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfnmaddps4mr_vfnmaddps4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmaddps4mr_vfnmaddps4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDPS4mr + %xmm0 = VFNMADDPS4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmaddsd4mr_vfnmaddsd4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmaddsd4mr_vfnmaddsd4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDSD4mr + %xmm0 = VFNMADDSD4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmaddsd4mr_int_vfnmaddsd4rr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmaddsd4mr_int_vfnmaddsd4rr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDSD4mr_Int + %xmm0 = VFNMADDSD4rr_Int undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmaddss4mr_vfnmaddss4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmaddss4mr_vfnmaddss4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDSS4mr + %xmm0 = VFNMADDSS4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmaddss4mr_int_vfnmaddss4rr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmaddss4mr_int_vfnmaddss4rr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDSS4mr_Int + %xmm0 = VFNMADDSS4rr_Int undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmsubpd4ymr_vfnmsubpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfnmsubpd4ymr_vfnmsubpd4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBPD4Ymr + %ymm0 = VFNMSUBPD4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfnmsubpd4mr_vfnmsubpd4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmsubpd4mr_vfnmsubpd4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBPD4mr + %xmm0 = VFNMSUBPD4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmsubps4ymr_vfnmsubps4yrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vfnmsubps4ymr_vfnmsubps4yrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBPS4Ymr + %ymm0 = VFNMSUBPS4Yrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vfnmsubps4mr_vfnmsubps4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmsubps4mr_vfnmsubps4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBPS4mr + %xmm0 = VFNMSUBPS4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmsubsd4mr_vfnmsubsd4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmsubsd4mr_vfnmsubsd4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBSD4mr + %xmm0 = VFNMSUBSD4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmsubsd4mr_int_vfnmsubsd4rr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmsubsd4mr_int_vfnmsubsd4rr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBSD4mr_Int + %xmm0 = VFNMSUBSD4rr_Int undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmsubss4mr_vfnmsubss4rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmsubss4mr_vfnmsubss4rr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBSS4mr + %xmm0 = VFNMSUBSS4rr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vfnmsubss4mr_int_vfnmsubss4rr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vfnmsubss4mr_int_vfnmsubss4rr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBSS4mr_Int + %xmm0 = VFNMSUBSS4rr_Int undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpcmovyrmr_vpcmovyrrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpcmovyrmr_vpcmovyrrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMOVYrmr + %ymm0 = VPCMOVYrrr undef %ymm1, %2, undef %ymm3 + RET 0 +... +--- +name: stack_fold_vpcmovrmr_vpcmovrrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcmovrmr_vpcmovrrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMOVrmr + %xmm0 = VPCMOVrrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpcombmi_vpcombri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcombmi_vpcombri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMBmi + %xmm0 = VPCOMBri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcombmi_alt_vpcombri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcombmi_alt_vpcombri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMBmi_alt + %xmm0 = VPCOMBri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomdmi_vpcomdri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomdmi_vpcomdri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMDmi + %xmm0 = VPCOMDri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomdmi_alt_vpcomdri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomdmi_alt_vpcomdri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMDmi_alt + %xmm0 = VPCOMDri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomqmi_vpcomqri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomqmi_vpcomqri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMQmi + %xmm0 = VPCOMQri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomqmi_alt_vpcomqri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomqmi_alt_vpcomqri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMQmi_alt + %xmm0 = VPCOMQri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomubmi_vpcomubri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomubmi_vpcomubri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMUBmi + %xmm0 = VPCOMUBri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomubmi_alt_vpcomubri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomubmi_alt_vpcomubri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMUBmi_alt + %xmm0 = VPCOMUBri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomudmi_vpcomudri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomudmi_vpcomudri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMUDmi + %xmm0 = VPCOMUDri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomudmi_alt_vpcomudri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomudmi_alt_vpcomudri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMUDmi_alt + %xmm0 = VPCOMUDri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomuqmi_vpcomuqri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomuqmi_vpcomuqri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMUQmi + %xmm0 = VPCOMUQri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomuqmi_alt_vpcomuqri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomuqmi_alt_vpcomuqri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMUQmi_alt + %xmm0 = VPCOMUQri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomuwmi_vpcomuwri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomuwmi_vpcomuwri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMUWmi + %xmm0 = VPCOMUWri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomuwmi_alt_vpcomuwri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomuwmi_alt_vpcomuwri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMUWmi_alt + %xmm0 = VPCOMUWri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomwmi_vpcomwri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomwmi_vpcomwri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMWmi + %xmm0 = VPCOMWri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpcomwmi_alt_vpcomwri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpcomwmi_alt_vpcomwri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCOMWmi_alt + %xmm0 = VPCOMWri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_vpermil2pdymr_vpermil2pdyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermil2pdymr_vpermil2pdyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMIL2PDYmr + %ymm0 = VPERMIL2PDYrr undef %ymm1, %2, undef %ymm3, 0 + RET 0 +... +--- +name: stack_fold_vpermil2pdmr_vpermil2pdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermil2pdmr_vpermil2pdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMIL2PDmr + %xmm0 = VPERMIL2PDrr undef %xmm1, %2, undef %xmm3, 0 + RET 0 +... +--- +name: stack_fold_vpermil2psymr_vpermil2psyrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr256 } +liveins: + - { reg: '%ymm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm2 + + ; CHECK-LABEL: name: stack_fold_vpermil2psymr_vpermil2psyrr_test + %2 = COPY %ymm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMIL2PSYmr + %ymm0 = VPERMIL2PSYrr undef %ymm1, %2, undef %ymm3, 0 + RET 0 +... +--- +name: stack_fold_vpermil2psmr_vpermil2psrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpermil2psmr_vpermil2psrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMIL2PSmr + %xmm0 = VPERMIL2PSrr undef %xmm1, %2, undef %xmm3, 0 + RET 0 +... +--- +name: stack_fold_vpmacsddrm_vpmacsddrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmacsddrm_vpmacsddrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMACSDDrm + %xmm0 = VPMACSDDrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpmacsdqhrm_vpmacsdqhrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmacsdqhrm_vpmacsdqhrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMACSDQHrm + %xmm0 = VPMACSDQHrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpmacsdqlrm_vpmacsdqlrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmacsdqlrm_vpmacsdqlrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMACSDQLrm + %xmm0 = VPMACSDQLrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpmacssddrm_vpmacssddrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmacssddrm_vpmacssddrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMACSSDDrm + %xmm0 = VPMACSSDDrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpmacssdqhrm_vpmacssdqhrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmacssdqhrm_vpmacssdqhrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMACSSDQHrm + %xmm0 = VPMACSSDQHrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpmacssdqlrm_vpmacssdqlrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmacssdqlrm_vpmacssdqlrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMACSSDQLrm + %xmm0 = VPMACSSDQLrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpmacsswdrm_vpmacsswdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmacsswdrm_vpmacsswdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMACSSWDrm + %xmm0 = VPMACSSWDrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpmacsswwrm_vpmacsswwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmacsswwrm_vpmacsswwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMACSSWWrm + %xmm0 = VPMACSSWWrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpmacswdrm_vpmacswdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmacswdrm_vpmacswdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMACSWDrm + %xmm0 = VPMACSWDrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpmacswwrm_vpmacswwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmacswwrm_vpmacswwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMACSWWrm + %xmm0 = VPMACSWWrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpmadcsswdrm_vpmadcsswdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmadcsswdrm_vpmadcsswdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADCSSWDrm + %xmm0 = VPMADCSSWDrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vpmadcswdrm_vpmadcswdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpmadcswdrm_vpmadcswdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPMADCSWDrm + %xmm0 = VPMADCSWDrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vppermrmr_vppermrrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vppermrmr_vppermrrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPPERMrmr + %xmm0 = VPPERMrrr undef %xmm1, %2, undef %xmm3 + RET 0 +... +--- +name: stack_fold_vprotbrm_vprotbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprotbrm_vprotbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTBrm + %xmm0 = VPROTBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vprotdrm_vprotdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprotdrm_vprotdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTDrm + %xmm0 = VPROTDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vprotqrm_vprotqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprotqrm_vprotqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTQrm + %xmm0 = VPROTQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vprotwrm_vprotwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vprotwrm_vprotwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPROTWrm + %xmm0 = VPROTWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshabrm_vpshabrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshabrm_vpshabrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHABrm + %xmm0 = VPSHABrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshadrm_vpshadrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshadrm_vpshadrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHADrm + %xmm0 = VPSHADrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshaqrm_vpshaqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshaqrm_vpshaqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHAQrm + %xmm0 = VPSHAQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshawrm_vpshawrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshawrm_vpshawrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHAWrm + %xmm0 = VPSHAWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshlbrm_vpshlbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshlbrm_vpshlbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHLBrm + %xmm0 = VPSHLBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshldrm_vpshldrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshldrm_vpshldrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHLDrm + %xmm0 = VPSHLDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshlqrm_vpshlqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshlqrm_vpshlqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHLQrm + %xmm0 = VPSHLQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vpshlwrm_vpshlwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vpshlwrm_vpshlwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPSHLWrm + %xmm0 = VPSHLWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vfmadd132pdym_vfmadd132pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pdym_vfmadd132pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PDYm + %ymm0 = VFMADD132PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132pdm_vfmadd132pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132pdm_vfmadd132pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PDm + %xmm0 = VFMADD132PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132psym_vfmadd132psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132psym_vfmadd132psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PSYm + %ymm0 = VFMADD132PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132psm_vfmadd132psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132psm_vfmadd132psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132PSm + %xmm0 = VFMADD132PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132sdm_vfmadd132sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132sdm_vfmadd132sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SDm + %xmm0 = VFMADD132SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132sdm_int_vfmadd132sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132sdm_int_vfmadd132sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SDm_Int + %xmm0 = VFMADD132SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132ssm_vfmadd132ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132ssm_vfmadd132ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SSm + %xmm0 = VFMADD132SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd132ssm_int_vfmadd132ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd132ssm_int_vfmadd132ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD132SSm_Int + %xmm0 = VFMADD132SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213pdym_vfmadd213pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pdym_vfmadd213pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PDYm + %ymm0 = VFMADD213PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213pdm_vfmadd213pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213pdm_vfmadd213pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PDm + %xmm0 = VFMADD213PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213psym_vfmadd213psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213psym_vfmadd213psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PSYm + %ymm0 = VFMADD213PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213psm_vfmadd213psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213psm_vfmadd213psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213PSm + %xmm0 = VFMADD213PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213sdm_vfmadd213sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213sdm_vfmadd213sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SDm + %xmm0 = VFMADD213SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213sdm_int_vfmadd213sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213sdm_int_vfmadd213sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SDm_Int + %xmm0 = VFMADD213SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213ssm_vfmadd213ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213ssm_vfmadd213ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SSm + %xmm0 = VFMADD213SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd213ssm_int_vfmadd213ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd213ssm_int_vfmadd213ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD213SSm_Int + %xmm0 = VFMADD213SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231pdym_vfmadd231pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pdym_vfmadd231pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PDYm + %ymm0 = VFMADD231PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231pdm_vfmadd231pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231pdm_vfmadd231pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PDm + %xmm0 = VFMADD231PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231psym_vfmadd231psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231psym_vfmadd231psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PSYm + %ymm0 = VFMADD231PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231psm_vfmadd231psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231psm_vfmadd231psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231PSm + %xmm0 = VFMADD231PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231sdm_vfmadd231sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231sdm_vfmadd231sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SDm + %xmm0 = VFMADD231SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231sdm_int_vfmadd231sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231sdm_int_vfmadd231sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SDm_Int + %xmm0 = VFMADD231SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231ssm_vfmadd231ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231ssm_vfmadd231ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SSm + %xmm0 = VFMADD231SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmadd231ssm_int_vfmadd231ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmadd231ssm_int_vfmadd231ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADD231SSm_Int + %xmm0 = VFMADD231SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddpd4yrm_vfmaddpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddpd4yrm_vfmaddpd4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDPD4Yrm + %ymm0 = VFMADDPD4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddpd4rm_vfmaddpd4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddpd4rm_vfmaddpd4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDPD4rm + %xmm0 = VFMADDPD4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddps4yrm_vfmaddps4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddps4yrm_vfmaddps4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDPS4Yrm + %ymm0 = VFMADDPS4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddps4rm_vfmaddps4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddps4rm_vfmaddps4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDPS4rm + %xmm0 = VFMADDPS4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsd4rm_vfmaddsd4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsd4rm_vfmaddsd4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSD4rm + %xmm0 = VFMADDSD4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsd4rm_int_vfmaddsd4rr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsd4rm_int_vfmaddsd4rr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSD4rm_Int + %xmm0 = VFMADDSD4rr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddss4rm_vfmaddss4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddss4rm_vfmaddss4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSS4rm + %xmm0 = VFMADDSS4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddss4rm_int_vfmaddss4rr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddss4rm_int_vfmaddss4rr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSS4rm_Int + %xmm0 = VFMADDSS4rr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pdym_vfmaddsub132pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pdym_vfmaddsub132pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PDYm + %ymm0 = VFMADDSUB132PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub132pdm_vfmaddsub132pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132pdm_vfmaddsub132pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PDm + %xmm0 = VFMADDSUB132PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub132psym_vfmaddsub132psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132psym_vfmaddsub132psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PSYm + %ymm0 = VFMADDSUB132PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub132psm_vfmaddsub132psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub132psm_vfmaddsub132psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB132PSm + %xmm0 = VFMADDSUB132PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pdym_vfmaddsub213pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pdym_vfmaddsub213pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PDYm + %ymm0 = VFMADDSUB213PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub213pdm_vfmaddsub213pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213pdm_vfmaddsub213pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PDm + %xmm0 = VFMADDSUB213PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub213psym_vfmaddsub213psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213psym_vfmaddsub213psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PSYm + %ymm0 = VFMADDSUB213PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub213psm_vfmaddsub213psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub213psm_vfmaddsub213psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB213PSm + %xmm0 = VFMADDSUB213PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pdym_vfmaddsub231pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pdym_vfmaddsub231pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PDYm + %ymm0 = VFMADDSUB231PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub231pdm_vfmaddsub231pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231pdm_vfmaddsub231pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PDm + %xmm0 = VFMADDSUB231PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub231psym_vfmaddsub231psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231psym_vfmaddsub231psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PSYm + %ymm0 = VFMADDSUB231PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsub231psm_vfmaddsub231psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsub231psm_vfmaddsub231psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUB231PSm + %xmm0 = VFMADDSUB231PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsubpd4yrm_vfmaddsubpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsubpd4yrm_vfmaddsubpd4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUBPD4Yrm + %ymm0 = VFMADDSUBPD4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsubpd4rm_vfmaddsubpd4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsubpd4rm_vfmaddsubpd4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUBPD4rm + %xmm0 = VFMADDSUBPD4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsubps4yrm_vfmaddsubps4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsubps4yrm_vfmaddsubps4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUBPS4Yrm + %ymm0 = VFMADDSUBPS4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmaddsubps4rm_vfmaddsubps4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmaddsubps4rm_vfmaddsubps4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMADDSUBPS4rm + %xmm0 = VFMADDSUBPS4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132pdym_vfmsub132pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pdym_vfmsub132pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PDYm + %ymm0 = VFMSUB132PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132pdm_vfmsub132pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132pdm_vfmsub132pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PDm + %xmm0 = VFMSUB132PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132psym_vfmsub132psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132psym_vfmsub132psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PSYm + %ymm0 = VFMSUB132PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132psm_vfmsub132psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132psm_vfmsub132psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132PSm + %xmm0 = VFMSUB132PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132sdm_vfmsub132sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132sdm_vfmsub132sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SDm + %xmm0 = VFMSUB132SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132sdm_int_vfmsub132sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132sdm_int_vfmsub132sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SDm_Int + %xmm0 = VFMSUB132SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132ssm_vfmsub132ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132ssm_vfmsub132ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SSm + %xmm0 = VFMSUB132SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub132ssm_int_vfmsub132ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub132ssm_int_vfmsub132ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB132SSm_Int + %xmm0 = VFMSUB132SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213pdym_vfmsub213pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pdym_vfmsub213pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PDYm + %ymm0 = VFMSUB213PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213pdm_vfmsub213pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213pdm_vfmsub213pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PDm + %xmm0 = VFMSUB213PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213psym_vfmsub213psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213psym_vfmsub213psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PSYm + %ymm0 = VFMSUB213PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213psm_vfmsub213psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213psm_vfmsub213psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213PSm + %xmm0 = VFMSUB213PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213sdm_vfmsub213sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213sdm_vfmsub213sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SDm + %xmm0 = VFMSUB213SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213sdm_int_vfmsub213sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213sdm_int_vfmsub213sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SDm_Int + %xmm0 = VFMSUB213SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213ssm_vfmsub213ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213ssm_vfmsub213ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SSm + %xmm0 = VFMSUB213SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub213ssm_int_vfmsub213ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub213ssm_int_vfmsub213ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB213SSm_Int + %xmm0 = VFMSUB213SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231pdym_vfmsub231pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pdym_vfmsub231pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PDYm + %ymm0 = VFMSUB231PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231pdm_vfmsub231pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231pdm_vfmsub231pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PDm + %xmm0 = VFMSUB231PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231psym_vfmsub231psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231psym_vfmsub231psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PSYm + %ymm0 = VFMSUB231PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231psm_vfmsub231psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231psm_vfmsub231psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231PSm + %xmm0 = VFMSUB231PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231sdm_vfmsub231sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231sdm_vfmsub231sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SDm + %xmm0 = VFMSUB231SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231sdm_int_vfmsub231sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231sdm_int_vfmsub231sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SDm_Int + %xmm0 = VFMSUB231SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231ssm_vfmsub231ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231ssm_vfmsub231ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SSm + %xmm0 = VFMSUB231SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsub231ssm_int_vfmsub231ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsub231ssm_int_vfmsub231ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUB231SSm_Int + %xmm0 = VFMSUB231SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pdym_vfmsubadd132pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pdym_vfmsubadd132pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PDYm + %ymm0 = VFMSUBADD132PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd132pdm_vfmsubadd132pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132pdm_vfmsubadd132pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PDm + %xmm0 = VFMSUBADD132PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd132psym_vfmsubadd132psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132psym_vfmsubadd132psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PSYm + %ymm0 = VFMSUBADD132PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd132psm_vfmsubadd132psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd132psm_vfmsubadd132psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD132PSm + %xmm0 = VFMSUBADD132PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pdym_vfmsubadd213pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pdym_vfmsubadd213pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PDYm + %ymm0 = VFMSUBADD213PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd213pdm_vfmsubadd213pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213pdm_vfmsubadd213pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PDm + %xmm0 = VFMSUBADD213PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd213psym_vfmsubadd213psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213psym_vfmsubadd213psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PSYm + %ymm0 = VFMSUBADD213PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd213psm_vfmsubadd213psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd213psm_vfmsubadd213psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD213PSm + %xmm0 = VFMSUBADD213PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pdym_vfmsubadd231pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pdym_vfmsubadd231pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PDYm + %ymm0 = VFMSUBADD231PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd231pdm_vfmsubadd231pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231pdm_vfmsubadd231pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PDm + %xmm0 = VFMSUBADD231PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd231psym_vfmsubadd231psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231psym_vfmsubadd231psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PSYm + %ymm0 = VFMSUBADD231PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubadd231psm_vfmsubadd231psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubadd231psm_vfmsubadd231psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADD231PSm + %xmm0 = VFMSUBADD231PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubaddpd4yrm_vfmsubaddpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubaddpd4yrm_vfmsubaddpd4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADDPD4Yrm + %ymm0 = VFMSUBADDPD4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubaddpd4rm_vfmsubaddpd4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubaddpd4rm_vfmsubaddpd4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADDPD4rm + %xmm0 = VFMSUBADDPD4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubaddps4yrm_vfmsubaddps4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubaddps4yrm_vfmsubaddps4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADDPS4Yrm + %ymm0 = VFMSUBADDPS4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubaddps4rm_vfmsubaddps4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubaddps4rm_vfmsubaddps4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBADDPS4rm + %xmm0 = VFMSUBADDPS4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubpd4yrm_vfmsubpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubpd4yrm_vfmsubpd4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBPD4Yrm + %ymm0 = VFMSUBPD4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubpd4rm_vfmsubpd4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubpd4rm_vfmsubpd4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBPD4rm + %xmm0 = VFMSUBPD4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubps4yrm_vfmsubps4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubps4yrm_vfmsubps4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBPS4Yrm + %ymm0 = VFMSUBPS4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubps4rm_vfmsubps4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubps4rm_vfmsubps4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBPS4rm + %xmm0 = VFMSUBPS4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubsd4rm_vfmsubsd4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubsd4rm_vfmsubsd4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBSD4rm + %xmm0 = VFMSUBSD4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubsd4rm_int_vfmsubsd4rr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubsd4rm_int_vfmsubsd4rr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBSD4rm_Int + %xmm0 = VFMSUBSD4rr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubss4rm_vfmsubss4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubss4rm_vfmsubss4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBSS4rm + %xmm0 = VFMSUBSS4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfmsubss4rm_int_vfmsubss4rr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfmsubss4rm_int_vfmsubss4rr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFMSUBSS4rm_Int + %xmm0 = VFMSUBSS4rr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132pdym_vfnmadd132pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pdym_vfnmadd132pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PDYm + %ymm0 = VFNMADD132PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132pdm_vfnmadd132pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132pdm_vfnmadd132pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PDm + %xmm0 = VFNMADD132PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132psym_vfnmadd132psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132psym_vfnmadd132psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PSYm + %ymm0 = VFNMADD132PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132psm_vfnmadd132psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132psm_vfnmadd132psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132PSm + %xmm0 = VFNMADD132PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132sdm_vfnmadd132sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132sdm_vfnmadd132sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SDm + %xmm0 = VFNMADD132SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132sdm_int_vfnmadd132sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132sdm_int_vfnmadd132sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SDm_Int + %xmm0 = VFNMADD132SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132ssm_vfnmadd132ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132ssm_vfnmadd132ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SSm + %xmm0 = VFNMADD132SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd132ssm_int_vfnmadd132ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd132ssm_int_vfnmadd132ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD132SSm_Int + %xmm0 = VFNMADD132SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213pdym_vfnmadd213pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pdym_vfnmadd213pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PDYm + %ymm0 = VFNMADD213PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213pdm_vfnmadd213pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213pdm_vfnmadd213pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PDm + %xmm0 = VFNMADD213PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213psym_vfnmadd213psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213psym_vfnmadd213psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PSYm + %ymm0 = VFNMADD213PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213psm_vfnmadd213psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213psm_vfnmadd213psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213PSm + %xmm0 = VFNMADD213PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213sdm_vfnmadd213sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213sdm_vfnmadd213sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SDm + %xmm0 = VFNMADD213SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213sdm_int_vfnmadd213sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213sdm_int_vfnmadd213sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SDm_Int + %xmm0 = VFNMADD213SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213ssm_vfnmadd213ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213ssm_vfnmadd213ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SSm + %xmm0 = VFNMADD213SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd213ssm_int_vfnmadd213ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd213ssm_int_vfnmadd213ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD213SSm_Int + %xmm0 = VFNMADD213SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231pdym_vfnmadd231pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pdym_vfnmadd231pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PDYm + %ymm0 = VFNMADD231PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231pdm_vfnmadd231pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231pdm_vfnmadd231pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PDm + %xmm0 = VFNMADD231PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231psym_vfnmadd231psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231psym_vfnmadd231psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PSYm + %ymm0 = VFNMADD231PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231psm_vfnmadd231psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231psm_vfnmadd231psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231PSm + %xmm0 = VFNMADD231PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231sdm_vfnmadd231sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231sdm_vfnmadd231sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SDm + %xmm0 = VFNMADD231SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231sdm_int_vfnmadd231sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231sdm_int_vfnmadd231sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SDm_Int + %xmm0 = VFNMADD231SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231ssm_vfnmadd231ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231ssm_vfnmadd231ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SSm + %xmm0 = VFNMADD231SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmadd231ssm_int_vfnmadd231ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmadd231ssm_int_vfnmadd231ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADD231SSm_Int + %xmm0 = VFNMADD231SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmaddpd4yrm_vfnmaddpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmaddpd4yrm_vfnmaddpd4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDPD4Yrm + %ymm0 = VFNMADDPD4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmaddpd4rm_vfnmaddpd4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmaddpd4rm_vfnmaddpd4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDPD4rm + %xmm0 = VFNMADDPD4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmaddps4yrm_vfnmaddps4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmaddps4yrm_vfnmaddps4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDPS4Yrm + %ymm0 = VFNMADDPS4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmaddps4rm_vfnmaddps4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmaddps4rm_vfnmaddps4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDPS4rm + %xmm0 = VFNMADDPS4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmaddsd4rm_vfnmaddsd4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmaddsd4rm_vfnmaddsd4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDSD4rm + %xmm0 = VFNMADDSD4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmaddsd4rm_int_vfnmaddsd4rr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmaddsd4rm_int_vfnmaddsd4rr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDSD4rm_Int + %xmm0 = VFNMADDSD4rr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmaddss4rm_vfnmaddss4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmaddss4rm_vfnmaddss4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDSS4rm + %xmm0 = VFNMADDSS4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmaddss4rm_int_vfnmaddss4rr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmaddss4rm_int_vfnmaddss4rr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMADDSS4rm_Int + %xmm0 = VFNMADDSS4rr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132pdym_vfnmsub132pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pdym_vfnmsub132pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PDYm + %ymm0 = VFNMSUB132PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132pdm_vfnmsub132pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132pdm_vfnmsub132pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PDm + %xmm0 = VFNMSUB132PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132psym_vfnmsub132psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132psym_vfnmsub132psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PSYm + %ymm0 = VFNMSUB132PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132psm_vfnmsub132psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132psm_vfnmsub132psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132PSm + %xmm0 = VFNMSUB132PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132sdm_vfnmsub132sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132sdm_vfnmsub132sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SDm + %xmm0 = VFNMSUB132SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132sdm_int_vfnmsub132sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132sdm_int_vfnmsub132sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SDm_Int + %xmm0 = VFNMSUB132SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132ssm_vfnmsub132ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132ssm_vfnmsub132ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SSm + %xmm0 = VFNMSUB132SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub132ssm_int_vfnmsub132ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub132ssm_int_vfnmsub132ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB132SSm_Int + %xmm0 = VFNMSUB132SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213pdym_vfnmsub213pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pdym_vfnmsub213pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PDYm + %ymm0 = VFNMSUB213PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213pdm_vfnmsub213pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213pdm_vfnmsub213pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PDm + %xmm0 = VFNMSUB213PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213psym_vfnmsub213psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213psym_vfnmsub213psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PSYm + %ymm0 = VFNMSUB213PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213psm_vfnmsub213psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213psm_vfnmsub213psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213PSm + %xmm0 = VFNMSUB213PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213sdm_vfnmsub213sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213sdm_vfnmsub213sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SDm + %xmm0 = VFNMSUB213SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213sdm_int_vfnmsub213sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213sdm_int_vfnmsub213sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SDm_Int + %xmm0 = VFNMSUB213SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213ssm_vfnmsub213ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213ssm_vfnmsub213ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SSm + %xmm0 = VFNMSUB213SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub213ssm_int_vfnmsub213ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub213ssm_int_vfnmsub213ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB213SSm_Int + %xmm0 = VFNMSUB213SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231pdym_vfnmsub231pdyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pdym_vfnmsub231pdyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PDYm + %ymm0 = VFNMSUB231PDYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231pdm_vfnmsub231pdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231pdm_vfnmsub231pdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PDm + %xmm0 = VFNMSUB231PDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231psym_vfnmsub231psyr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231psym_vfnmsub231psyr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PSYm + %ymm0 = VFNMSUB231PSYr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231psm_vfnmsub231psr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231psm_vfnmsub231psr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231PSm + %xmm0 = VFNMSUB231PSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231sdm_vfnmsub231sdr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231sdm_vfnmsub231sdr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SDm + %xmm0 = VFNMSUB231SDr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231sdm_int_vfnmsub231sdr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231sdm_int_vfnmsub231sdr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SDm_Int + %xmm0 = VFNMSUB231SDr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231ssm_vfnmsub231ssr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231ssm_vfnmsub231ssr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SSm + %xmm0 = VFNMSUB231SSr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsub231ssm_int_vfnmsub231ssr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsub231ssm_int_vfnmsub231ssr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUB231SSm_Int + %xmm0 = VFNMSUB231SSr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsubpd4yrm_vfnmsubpd4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsubpd4yrm_vfnmsubpd4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBPD4Yrm + %ymm0 = VFNMSUBPD4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsubpd4rm_vfnmsubpd4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsubpd4rm_vfnmsubpd4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBPD4rm + %xmm0 = VFNMSUBPD4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsubps4yrm_vfnmsubps4yrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsubps4yrm_vfnmsubps4yrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBPS4Yrm + %ymm0 = VFNMSUBPS4Yrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsubps4rm_vfnmsubps4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsubps4rm_vfnmsubps4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBPS4rm + %xmm0 = VFNMSUBPS4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsubsd4rm_vfnmsubsd4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr64 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsubsd4rm_vfnmsubsd4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBSD4rm + %xmm0 = VFNMSUBSD4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsubsd4rm_int_vfnmsubsd4rr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsubsd4rm_int_vfnmsubsd4rr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBSD4rm_Int + %xmm0 = VFNMSUBSD4rr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsubss4rm_vfnmsubss4rr_test +tracksRegLiveness: true +registers: + - { id: 3, class: fr32 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsubss4rm_vfnmsubss4rr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBSS4rm + %xmm0 = VFNMSUBSS4rr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vfnmsubss4rm_int_vfnmsubss4rr_int_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vfnmsubss4rm_int_vfnmsubss4rr_int_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VFNMSUBSS4rm_Int + %xmm0 = VFNMSUBSS4rr_Int undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpcmovyrrm_vpcmovyrrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpcmovyrrm_vpcmovyrrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMOVYrrm + %ymm0 = VPCMOVYrrr undef %ymm1, undef %ymm2, %3 + RET 0 +... +--- +name: stack_fold_vpcmovrrm_vpcmovrrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpcmovrrm_vpcmovrrr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPCMOVrrm + %xmm0 = VPCMOVrrr undef %xmm1, undef %xmm2, %3 + RET 0 +... +--- +name: stack_fold_vpermil2pdyrm_vpermil2pdyrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermil2pdyrm_vpermil2pdyrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMIL2PDYrm + %ymm0 = VPERMIL2PDYrr undef %ymm1, undef %ymm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermil2pdrm_vpermil2pdrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermil2pdrm_vpermil2pdrr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMIL2PDrm + %xmm0 = VPERMIL2PDrr undef %xmm1, undef %xmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermil2psyrm_vpermil2psyrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr256 } +liveins: + - { reg: '%ymm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %ymm3 + + ; CHECK-LABEL: name: stack_fold_vpermil2psyrm_vpermil2psyrr_test + %3 = COPY %ymm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMIL2PSYrm + %ymm0 = VPERMIL2PSYrr undef %ymm1, undef %ymm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vpermil2psrm_vpermil2psrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vpermil2psrm_vpermil2psrr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPERMIL2PSrm + %xmm0 = VPERMIL2PSrr undef %xmm1, undef %xmm2, %3, 0 + RET 0 +... +--- +name: stack_fold_vppermrrm_vppermrrr_test +tracksRegLiveness: true +registers: + - { id: 3, class: vr128 } +liveins: + - { reg: '%xmm3', virtual-reg: '%3' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm3 + + ; CHECK-LABEL: name: stack_fold_vppermrrm_vppermrrr_test + %3 = COPY %xmm3 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VPPERMrrm + %xmm0 = VPPERMrrr undef %xmm1, undef %xmm2, %3 + RET 0 +... Index: test/CodeGen/X86/memoryFolding-sse.mir =================================================================== --- test/CodeGen/X86/memoryFolding-sse.mir +++ test/CodeGen/X86/memoryFolding-sse.mir @@ -0,0 +1,6083 @@ +# RUN: llc -run-pass greedy -stack-alignment=64 -o - %s | FileCheck %s +# Stack alignment set to 64 to enable folding of aligned mov instructions. +--- | + attributes #0 = { "target-features" = "+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2" } + attributes #1 = { optsize "target-features" = "+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2" } + define void @stack_fold_extractpsmr_extractpsrr_test() #0 { ret void } + define void @stack_fold_movapdmr_movapdrr_test() #0 { ret void } + define void @stack_fold_movapsmr_movapsrr_test() #0 { ret void } + define void @stack_fold_movdqamr_movdqarr_test() #0 { ret void } + define void @stack_fold_movdqumr_movdqurr_test() #0 { ret void } + define void @stack_fold_movpdi2dimr_movpdi2dirr_test() #0 { ret void } + define void @stack_fold_movpqi2qimr_movpqi2qirr_test() #0 { ret void } + define void @stack_fold_movpqito64mr_movpqito64rr_test() #0 { ret void } + define void @stack_fold_movsdto64mr_movsdto64rr_test() #0 { ret void } + define void @stack_fold_movss2dimr_movss2dirr_test() #0 { ret void } + define void @stack_fold_movupdmr_movupdrr_test() #0 { ret void } + define void @stack_fold_movupsmr_movupsrr_test() #0 { ret void } + define void @stack_fold_pextrbmr_pextrbrr_test() #0 { ret void } + define void @stack_fold_pextrdmr_pextrdrr_test() #0 { ret void } + define void @stack_fold_pextrqmr_pextrqrr_test() #0 { ret void } + define void @stack_fold_pextrwmr_pextrwri_test() #0 { ret void } + define void @stack_fold_comisdrm_comisdrr_test() #0 { ret void } + define void @stack_fold_comissrm_comissrr_test() #0 { ret void } + define void @stack_fold_cvtdq2pdrm_cvtdq2pdrr_test() #0 { ret void } + define void @stack_fold_cvtdq2psrm_cvtdq2psrr_test() #0 { ret void } + define void @stack_fold_cvtpd2dqrm_cvtpd2dqrr_test() #0 { ret void } + define void @stack_fold_cvtpd2psrm_cvtpd2psrr_test() #0 { ret void } + define void @stack_fold_cvtps2dqrm_cvtps2dqrr_test() #0 { ret void } + define void @stack_fold_cvtps2pdrm_cvtps2pdrr_test() #0 { ret void } + define void @stack_fold_cvtsd2si64rm_cvtsd2si64rr_test() #0 { ret void } + define void @stack_fold_cvtsd2sirm_cvtsd2sirr_test() #0 { ret void } + define void @stack_fold_cvtsd2ssrm_cvtsd2ssrr_test() #1 { ret void } + define void @stack_fold_cvtsi2sd64rm_cvtsi2sd64rr_test() #1 { ret void } + define void @stack_fold_cvtsi2sdrm_cvtsi2sdrr_test() #1 { ret void } + define void @stack_fold_cvtsi2ss64rm_cvtsi2ss64rr_test() #1 { ret void } + define void @stack_fold_cvtsi2ssrm_cvtsi2ssrr_test() #1 { ret void } + define void @stack_fold_cvtss2sdrm_cvtss2sdrr_test() #1 { ret void } + define void @stack_fold_cvtss2si64rm_cvtss2si64rr_test() #0 { ret void } + define void @stack_fold_cvtss2sirm_cvtss2sirr_test() #0 { ret void } + define void @stack_fold_cvttpd2dqrm_cvttpd2dqrr_test() #0 { ret void } + define void @stack_fold_cvttps2dqrm_cvttps2dqrr_test() #0 { ret void } + define void @stack_fold_cvttsd2si64rm_cvttsd2si64rr_test() #0 { ret void } + define void @stack_fold_cvttsd2sirm_cvttsd2sirr_test() #0 { ret void } + define void @stack_fold_cvttss2si64rm_cvttss2si64rr_test() #0 { ret void } + define void @stack_fold_cvttss2sirm_cvttss2sirr_test() #0 { ret void } + define void @stack_fold_int_comisdrm_int_comisdrr_test() #0 { ret void } + define void @stack_fold_int_comissrm_int_comissrr_test() #0 { ret void } + define void @stack_fold_int_cvttsd2si64rm_int_cvttsd2si64rr_test() #0 { ret void } + define void @stack_fold_int_cvttsd2sirm_int_cvttsd2sirr_test() #0 { ret void } + define void @stack_fold_int_cvttss2si64rm_int_cvttss2si64rr_test() #0 { ret void } + define void @stack_fold_int_cvttss2sirm_int_cvttss2sirr_test() #0 { ret void } + define void @stack_fold_int_ucomisdrm_int_ucomisdrr_test() #0 { ret void } + define void @stack_fold_int_ucomissrm_int_ucomissrr_test() #0 { ret void } + define void @stack_fold_mmx_cvtpd2piirm_mmx_cvtpd2piirr_test() #0 { ret void } + define void @stack_fold_mmx_cvtpi2pdirm_mmx_cvtpi2pdirr_test() #0 { ret void } + define void @stack_fold_mmx_cvtps2piirm_mmx_cvtps2piirr_test() #0 { ret void } + define void @stack_fold_mmx_cvttpd2piirm_mmx_cvttpd2piirr_test() #0 { ret void } + define void @stack_fold_mmx_cvttps2piirm_mmx_cvttps2piirr_test() #0 { ret void } + define void @stack_fold_mmx_pabsbrm64_mmx_pabsbrr64_test() #0 { ret void } + define void @stack_fold_mmx_pabsdrm64_mmx_pabsdrr64_test() #0 { ret void } + define void @stack_fold_mmx_pabswrm64_mmx_pabswrr64_test() #0 { ret void } + define void @stack_fold_mov64topqirm_mov64topqirr_test() #0 { ret void } + define void @stack_fold_movapdrm_movapdrr_test() #0 { ret void } + define void @stack_fold_movapsrm_movapsrr_test() #0 { ret void } + define void @stack_fold_movdduprm_movdduprr_test() #0 { ret void } + define void @stack_fold_movdi2pdirm_movdi2pdirr_test() #0 { ret void } + define void @stack_fold_movdi2ssrm_movdi2ssrr_test() #0 { ret void } + define void @stack_fold_movdqarm_movdqarr_test() #0 { ret void } + define void @stack_fold_movdqurm_movdqurr_test() #0 { ret void } + define void @stack_fold_movqi2pqirm_movzpqilo2pqirr_test() #0 { ret void } + define void @stack_fold_movshduprm_movshduprr_test() #0 { ret void } + define void @stack_fold_movslduprm_movslduprr_test() #0 { ret void } + define void @stack_fold_movupdrm_movupdrr_test() #0 { ret void } + define void @stack_fold_movupsrm_movupsrr_test() #0 { ret void } + define void @stack_fold_pabsbrm_pabsbrr_test() #0 { ret void } + define void @stack_fold_pabsdrm_pabsdrr_test() #0 { ret void } + define void @stack_fold_pabswrm_pabswrr_test() #0 { ret void } + define void @stack_fold_pcmpestrirm_pcmpestrirr_test() #0 { ret void } + define void @stack_fold_pcmpestrm128rm_pcmpestrm128rr_test() #0 { ret void } + define void @stack_fold_pcmpistrirm_pcmpistrirr_test() #0 { ret void } + define void @stack_fold_pcmpistrm128rm_pcmpistrm128rr_test() #0 { ret void } + define void @stack_fold_phminposuwrm128_phminposuwrr128_test() #0 { ret void } + define void @stack_fold_pmovsxbdrm_pmovsxbdrr_test() #0 { ret void } + define void @stack_fold_pmovsxbqrm_pmovsxbqrr_test() #0 { ret void } + define void @stack_fold_pmovsxbwrm_pmovsxbwrr_test() #0 { ret void } + define void @stack_fold_pmovsxdqrm_pmovsxdqrr_test() #0 { ret void } + define void @stack_fold_pmovsxwdrm_pmovsxwdrr_test() #0 { ret void } + define void @stack_fold_pmovsxwqrm_pmovsxwqrr_test() #0 { ret void } + define void @stack_fold_pmovzxbdrm_pmovzxbdrr_test() #0 { ret void } + define void @stack_fold_pmovzxbqrm_pmovzxbqrr_test() #0 { ret void } + define void @stack_fold_pmovzxbwrm_pmovzxbwrr_test() #0 { ret void } + define void @stack_fold_pmovzxdqrm_pmovzxdqrr_test() #0 { ret void } + define void @stack_fold_pmovzxwdrm_pmovzxwdrr_test() #0 { ret void } + define void @stack_fold_pmovzxwqrm_pmovzxwqrr_test() #0 { ret void } + define void @stack_fold_pshufdmi_pshufdri_test() #0 { ret void } + define void @stack_fold_pshufhwmi_pshufhwri_test() #0 { ret void } + define void @stack_fold_pshuflwmi_pshuflwri_test() #0 { ret void } + define void @stack_fold_ptestrm_ptestrr_test() #0 { ret void } + define void @stack_fold_rcppsm_rcppsr_test() #0 { ret void } + define void @stack_fold_rcpssm_rcpssr_test() #1 { ret void } + define void @stack_fold_roundpdm_roundpdr_test() #0 { ret void } + define void @stack_fold_roundpsm_roundpsr_test() #0 { ret void } + define void @stack_fold_roundsdm_roundsdr_test() #1 { ret void } + define void @stack_fold_roundssm_roundssr_test() #1 { ret void } + define void @stack_fold_rsqrtpsm_rsqrtpsr_test() #0 { ret void } + define void @stack_fold_rsqrtssm_rsqrtssr_test() #1 { ret void } + define void @stack_fold_sqrtpdm_sqrtpdr_test() #0 { ret void } + define void @stack_fold_sqrtpsm_sqrtpsr_test() #0 { ret void } + define void @stack_fold_sqrtsdm_sqrtsdr_test() #1 { ret void } + define void @stack_fold_sqrtssm_sqrtssr_test() #1 { ret void } + define void @stack_fold_ucomisdrm_ucomisdrr_test() #0 { ret void } + define void @stack_fold_ucomissrm_ucomissrr_test() #0 { ret void } + define void @stack_fold_addpdrm_addpdrr_test() #0 { ret void } + define void @stack_fold_addpsrm_addpsrr_test() #0 { ret void } + define void @stack_fold_addsdrm_addsdrr_test() #0 { ret void } + define void @stack_fold_addsdrm_int_addsdrr_int_test() #0 { ret void } + define void @stack_fold_addssrm_addssrr_test() #0 { ret void } + define void @stack_fold_addssrm_int_addssrr_int_test() #0 { ret void } + define void @stack_fold_addsubpdrm_addsubpdrr_test() #0 { ret void } + define void @stack_fold_addsubpsrm_addsubpsrr_test() #0 { ret void } + define void @stack_fold_andnpdrm_andnpdrr_test() #0 { ret void } + define void @stack_fold_andnpsrm_andnpsrr_test() #0 { ret void } + define void @stack_fold_andpdrm_andpdrr_test() #0 { ret void } + define void @stack_fold_andpsrm_andpsrr_test() #0 { ret void } + define void @stack_fold_blendpdrmi_blendpdrri_test() #0 { ret void } + define void @stack_fold_blendpsrmi_blendpsrri_test() #0 { ret void } + define void @stack_fold_blendvpdrm0_blendvpdrr0_test() #0 { ret void } + define void @stack_fold_blendvpsrm0_blendvpsrr0_test() #0 { ret void } + define void @stack_fold_cmppdrmi_cmppdrri_test() #0 { ret void } + define void @stack_fold_cmppdrmi_alt_cmppdrri_alt_test() #0 { ret void } + define void @stack_fold_cmppsrmi_cmppsrri_test() #0 { ret void } + define void @stack_fold_cmppsrmi_alt_cmppsrri_alt_test() #0 { ret void } + define void @stack_fold_cmpsdrm_cmpsdrr_test() #0 { ret void } + define void @stack_fold_cmpsdrm_alt_cmpsdrr_alt_test() #0 { ret void } + define void @stack_fold_cmpssrm_cmpssrr_test() #0 { ret void } + define void @stack_fold_cmpssrm_alt_cmpssrr_alt_test() #0 { ret void } + define void @stack_fold_crc32r32m16_crc32r32r16_test() #0 { ret void } + define void @stack_fold_crc32r32m32_crc32r32r32_test() #0 { ret void } + define void @stack_fold_crc32r32m8_crc32r32r8_test() #0 { ret void } + define void @stack_fold_crc32r64m64_crc32r64r64_test() #0 { ret void } + define void @stack_fold_crc32r64m8_crc32r64r8_test() #0 { ret void } + define void @stack_fold_divpdrm_divpdrr_test() #0 { ret void } + define void @stack_fold_divpsrm_divpsrr_test() #0 { ret void } + define void @stack_fold_divsdrm_divsdrr_test() #0 { ret void } + define void @stack_fold_divsdrm_int_divsdrr_int_test() #0 { ret void } + define void @stack_fold_divssrm_divssrr_test() #0 { ret void } + define void @stack_fold_divssrm_int_divssrr_int_test() #0 { ret void } + define void @stack_fold_dppdrmi_dppdrri_test() #0 { ret void } + define void @stack_fold_dppsrmi_dppsrri_test() #0 { ret void } + define void @stack_fold_haddpdrm_haddpdrr_test() #0 { ret void } + define void @stack_fold_haddpsrm_haddpsrr_test() #0 { ret void } + define void @stack_fold_hsubpdrm_hsubpdrr_test() #0 { ret void } + define void @stack_fold_hsubpsrm_hsubpsrr_test() #0 { ret void } + define void @stack_fold_insertpsrm_insertpsrr_test() #0 { ret void } + define void @stack_fold_int_cmpsdrm_int_cmpsdrr_test() #0 { ret void } + define void @stack_fold_int_cmpssrm_int_cmpssrr_test() #0 { ret void } + define void @stack_fold_int_cvtsd2ssrm_int_cvtsd2ssrr_test() #0 { ret void } + define void @stack_fold_int_cvtsi2sd64rm_int_cvtsi2sd64rr_test() #0 { ret void } + define void @stack_fold_int_cvtsi2sdrm_int_cvtsi2sdrr_test() #0 { ret void } + define void @stack_fold_int_cvtsi2ss64rm_int_cvtsi2ss64rr_test() #0 { ret void } + define void @stack_fold_int_cvtsi2ssrm_int_cvtsi2ssrr_test() #0 { ret void } + define void @stack_fold_int_cvtss2sdrm_int_cvtss2sdrr_test() #0 { ret void } + define void @stack_fold_maxcpdrm_maxcpdrr_test() #0 { ret void } + define void @stack_fold_maxcpsrm_maxcpsrr_test() #0 { ret void } + define void @stack_fold_maxcsdrm_maxcsdrr_test() #0 { ret void } + define void @stack_fold_maxcssrm_maxcssrr_test() #0 { ret void } + define void @stack_fold_maxpdrm_maxpdrr_test() #0 { ret void } + define void @stack_fold_maxpsrm_maxpsrr_test() #0 { ret void } + define void @stack_fold_maxsdrm_maxsdrr_test() #0 { ret void } + define void @stack_fold_maxsdrm_int_maxsdrr_int_test() #0 { ret void } + define void @stack_fold_maxssrm_maxssrr_test() #0 { ret void } + define void @stack_fold_maxssrm_int_maxssrr_int_test() #0 { ret void } + define void @stack_fold_mincpdrm_mincpdrr_test() #0 { ret void } + define void @stack_fold_mincpsrm_mincpsrr_test() #0 { ret void } + define void @stack_fold_mincsdrm_mincsdrr_test() #0 { ret void } + define void @stack_fold_mincssrm_mincssrr_test() #0 { ret void } + define void @stack_fold_minpdrm_minpdrr_test() #0 { ret void } + define void @stack_fold_minpsrm_minpsrr_test() #0 { ret void } + define void @stack_fold_minsdrm_minsdrr_test() #0 { ret void } + define void @stack_fold_minsdrm_int_minsdrr_int_test() #0 { ret void } + define void @stack_fold_minssrm_minssrr_test() #0 { ret void } + define void @stack_fold_minssrm_int_minssrr_int_test() #0 { ret void } + define void @stack_fold_mmx_cvtpi2psirm_mmx_cvtpi2psirr_test() #0 { ret void } + define void @stack_fold_mmx_paddqirm_mmx_paddqirr_test() #0 { ret void } + define void @stack_fold_mmx_palignr64irm_mmx_palignr64irr_test() #0 { ret void } + define void @stack_fold_mmx_pavgbirm_mmx_pavgbirr_test() #0 { ret void } + define void @stack_fold_mmx_pavgwirm_mmx_pavgwirr_test() #0 { ret void } + define void @stack_fold_mmx_phaddswrm64_mmx_phaddswrr64_test() #0 { ret void } + define void @stack_fold_mmx_phaddwrm64_mmx_phaddwrr64_test() #0 { ret void } + define void @stack_fold_mmx_phaddrm64_mmx_phaddrr64_test() #0 { ret void } + define void @stack_fold_mmx_phsubdrm64_mmx_phsubdrr64_test() #0 { ret void } + define void @stack_fold_mmx_phsubswrm64_mmx_phsubswrr64_test() #0 { ret void } + define void @stack_fold_mmx_phsubwrm64_mmx_phsubwrr64_test() #0 { ret void } + define void @stack_fold_mmx_pinsrwirmi_mmx_pinsrwirri_test() #0 { ret void } + define void @stack_fold_mmx_pmaddubswrm64_mmx_pmaddubswrr64_test() #0 { ret void } + define void @stack_fold_mmx_pmaxswirm_mmx_pmaxswirr_test() #0 { ret void } + define void @stack_fold_mmx_pmaxubirm_mmx_pmaxubirr_test() #0 { ret void } + define void @stack_fold_mmx_pminswirm_mmx_pminswirr_test() #0 { ret void } + define void @stack_fold_mmx_pminubirm_mmx_pminubirr_test() #0 { ret void } + define void @stack_fold_mmx_pmulhrswrm64_mmx_pmulhrswrr64_test() #0 { ret void } + define void @stack_fold_mmx_pmulhuwirm_mmx_pmulhuwirr_test() #0 { ret void } + define void @stack_fold_mmx_pmuludqirm_mmx_pmuludqirr_test() #0 { ret void } + define void @stack_fold_mmx_psadbwirm_mmx_psadbwirr_test() #0 { ret void } + define void @stack_fold_mmx_pshufbrm64_mmx_pshufbrr64_test() #0 { ret void } + define void @stack_fold_mmx_psignbrm64_mmx_psignbrr64_test() #0 { ret void } + define void @stack_fold_mmx_psigndrm64_mmx_psigndrr64_test() #0 { ret void } + define void @stack_fold_mmx_psignwrm64_mmx_psignwrr64_test() #0 { ret void } + define void @stack_fold_mmx_psubqirm_mmx_psubqirr_test() #0 { ret void } + define void @stack_fold_movhpsrm_movlhpsrr_test() #0 { ret void } + define void @stack_fold_movlpsrm_movhlpsrr_test() #0 { ret void } + define void @stack_fold_mpsadbwrmi_mpsadbwrri_test() #0 { ret void } + define void @stack_fold_mulpdrm_mulpdrr_test() #0 { ret void } + define void @stack_fold_mulpsrm_mulpsrr_test() #0 { ret void } + define void @stack_fold_mulsdrm_mulsdrr_test() #0 { ret void } + define void @stack_fold_mulsdrm_int_mulsdrr_int_test() #0 { ret void } + define void @stack_fold_mulssrm_mulssrr_test() #0 { ret void } + define void @stack_fold_mulssrm_int_mulssrr_int_test() #0 { ret void } + define void @stack_fold_orpdrm_orpdrr_test() #0 { ret void } + define void @stack_fold_orpsrm_orpsrr_test() #0 { ret void } + define void @stack_fold_packssdwrm_packssdwrr_test() #0 { ret void } + define void @stack_fold_packsswbrm_packsswbrr_test() #0 { ret void } + define void @stack_fold_packusdwrm_packusdwrr_test() #0 { ret void } + define void @stack_fold_packuswbrm_packuswbrr_test() #0 { ret void } + define void @stack_fold_paddbrm_paddbrr_test() #0 { ret void } + define void @stack_fold_padddrm_padddrr_test() #0 { ret void } + define void @stack_fold_paddqrm_paddqrr_test() #0 { ret void } + define void @stack_fold_paddsbrm_paddsbrr_test() #0 { ret void } + define void @stack_fold_paddswrm_paddswrr_test() #0 { ret void } + define void @stack_fold_paddusbrm_paddusbrr_test() #0 { ret void } + define void @stack_fold_padduswrm_padduswrr_test() #0 { ret void } + define void @stack_fold_paddwrm_paddwrr_test() #0 { ret void } + define void @stack_fold_palignrrmi_palignrrri_test() #0 { ret void } + define void @stack_fold_pandnrm_pandnrr_test() #0 { ret void } + define void @stack_fold_pandrm_pandrr_test() #0 { ret void } + define void @stack_fold_pavgbrm_pavgbrr_test() #0 { ret void } + define void @stack_fold_pavgwrm_pavgwrr_test() #0 { ret void } + define void @stack_fold_pblendvbrm0_pblendvbrr0_test() #0 { ret void } + define void @stack_fold_pblendwrmi_pblendwrri_test() #0 { ret void } + define void @stack_fold_pcmpeqbrm_pcmpeqbrr_test() #0 { ret void } + define void @stack_fold_pcmpeqdrm_pcmpeqdrr_test() #0 { ret void } + define void @stack_fold_pcmpeqqrm_pcmpeqqrr_test() #0 { ret void } + define void @stack_fold_pcmpeqwrm_pcmpeqwrr_test() #0 { ret void } + define void @stack_fold_pcmpgtbrm_pcmpgtbrr_test() #0 { ret void } + define void @stack_fold_pcmpgtdrm_pcmpgtdrr_test() #0 { ret void } + define void @stack_fold_pcmpgtqrm_pcmpgtqrr_test() #0 { ret void } + define void @stack_fold_pcmpgtwrm_pcmpgtwrr_test() #0 { ret void } + define void @stack_fold_phadddrm_phadddrr_test() #0 { ret void } + define void @stack_fold_phaddswrm128_phaddswrr128_test() #0 { ret void } + define void @stack_fold_phaddwrm_phaddwrr_test() #0 { ret void } + define void @stack_fold_phsubdrm_phsubdrr_test() #0 { ret void } + define void @stack_fold_phsubswrm128_phsubswrr128_test() #0 { ret void } + define void @stack_fold_phsubwrm_phsubwrr_test() #0 { ret void } + define void @stack_fold_pinsrbrm_pinsrbrr_test() #0 { ret void } + define void @stack_fold_pinsrdrm_pinsrdrr_test() #0 { ret void } + define void @stack_fold_pinsrqrm_pinsrqrr_test() #0 { ret void } + define void @stack_fold_pinsrwrmi_pinsrwrri_test() #0 { ret void } + define void @stack_fold_pmaddubswrm_pmaddubswrr_test() #0 { ret void } + define void @stack_fold_pmaddwdrm_pmaddwdrr_test() #0 { ret void } + define void @stack_fold_pmaxsbrm_pmaxsbrr_test() #0 { ret void } + define void @stack_fold_pmaxsdrm_pmaxsdrr_test() #0 { ret void } + define void @stack_fold_pmaxswrm_pmaxswrr_test() #0 { ret void } + define void @stack_fold_pmaxubrm_pmaxubrr_test() #0 { ret void } + define void @stack_fold_pmaxudrm_pmaxudrr_test() #0 { ret void } + define void @stack_fold_pmaxuwrm_pmaxuwrr_test() #0 { ret void } + define void @stack_fold_pminsbrm_pminsbrr_test() #0 { ret void } + define void @stack_fold_pminsdrm_pminsdrr_test() #0 { ret void } + define void @stack_fold_pminswrm_pminswrr_test() #0 { ret void } + define void @stack_fold_pminubrm_pminubrr_test() #0 { ret void } + define void @stack_fold_pminudrm_pminudrr_test() #0 { ret void } + define void @stack_fold_pminuwrm_pminuwrr_test() #0 { ret void } + define void @stack_fold_pmuldqrm_pmuldqrr_test() #0 { ret void } + define void @stack_fold_pmulhrswrm_pmulhrswrr_test() #0 { ret void } + define void @stack_fold_pmulhuwrm_pmulhuwrr_test() #0 { ret void } + define void @stack_fold_pmulhwrm_pmulhwrr_test() #0 { ret void } + define void @stack_fold_pmulldrm_pmulldrr_test() #0 { ret void } + define void @stack_fold_pmullwrm_pmullwrr_test() #0 { ret void } + define void @stack_fold_pmuludqrm_pmuludqrr_test() #0 { ret void } + define void @stack_fold_porrm_porrr_test() #0 { ret void } + define void @stack_fold_psadbwrm_psadbwrr_test() #0 { ret void } + define void @stack_fold_pshufbrm_pshufbrr_test() #0 { ret void } + define void @stack_fold_psignbrm128_psignbrr128_test() #0 { ret void } + define void @stack_fold_psigndrm128_psigndrr128_test() #0 { ret void } + define void @stack_fold_psignwrm128_psignwrr128_test() #0 { ret void } + define void @stack_fold_pslldrm_pslldrr_test() #0 { ret void } + define void @stack_fold_psllqrm_psllqrr_test() #0 { ret void } + define void @stack_fold_psllwrm_psllwrr_test() #0 { ret void } + define void @stack_fold_psradrm_psradrr_test() #0 { ret void } + define void @stack_fold_psrawrm_psrawrr_test() #0 { ret void } + define void @stack_fold_psrldrm_psrldrr_test() #0 { ret void } + define void @stack_fold_psrlqrm_psrlqrr_test() #0 { ret void } + define void @stack_fold_psrlwrm_psrlwrr_test() #0 { ret void } + define void @stack_fold_psubbrm_psubbrr_test() #0 { ret void } + define void @stack_fold_psubdrm_psubdrr_test() #0 { ret void } + define void @stack_fold_psubqrm_psubqrr_test() #0 { ret void } + define void @stack_fold_psubsbrm_psubsbrr_test() #0 { ret void } + define void @stack_fold_psubswrm_psubswrr_test() #0 { ret void } + define void @stack_fold_psubusbrm_psubusbrr_test() #0 { ret void } + define void @stack_fold_psubuswrm_psubuswrr_test() #0 { ret void } + define void @stack_fold_psubwrm_psubwrr_test() #0 { ret void } + define void @stack_fold_punpckhbwrm_punpckhbwrr_test() #0 { ret void } + define void @stack_fold_punpckhdqrm_punpckhdqrr_test() #0 { ret void } + define void @stack_fold_punpckhqdqrm_punpckhqdqrr_test() #0 { ret void } + define void @stack_fold_punpckhwdrm_punpckhwdrr_test() #0 { ret void } + define void @stack_fold_punpcklbwrm_punpcklbwrr_test() #0 { ret void } + define void @stack_fold_punpckldqrm_punpckldqrr_test() #0 { ret void } + define void @stack_fold_punpcklqdqrm_punpcklqdqrr_test() #0 { ret void } + define void @stack_fold_punpcklwdrm_punpcklwdrr_test() #0 { ret void } + define void @stack_fold_pxorrm_pxorrr_test() #0 { ret void } + define void @stack_fold_roundsdm_int_roundsdr_int_test() #0 { ret void } + define void @stack_fold_roundssm_int_roundssr_int_test() #0 { ret void } + define void @stack_fold_shufpdrmi_shufpdrri_test() #0 { ret void } + define void @stack_fold_shufpsrmi_shufpsrri_test() #0 { ret void } + define void @stack_fold_subpdrm_subpdrr_test() #0 { ret void } + define void @stack_fold_subpsrm_subpsrr_test() #0 { ret void } + define void @stack_fold_subsdrm_subsdrr_test() #0 { ret void } + define void @stack_fold_subsdrm_int_subsdrr_int_test() #0 { ret void } + define void @stack_fold_subssrm_subssrr_test() #0 { ret void } + define void @stack_fold_subssrm_int_subssrr_int_test() #0 { ret void } + define void @stack_fold_unpckhpdrm_unpckhpdrr_test() #0 { ret void } + define void @stack_fold_unpckhpsrm_unpckhpsrr_test() #0 { ret void } + define void @stack_fold_unpcklpdrm_unpcklpdrr_test() #0 { ret void } + define void @stack_fold_unpcklpsrm_unpcklpsrr_test() #0 { ret void } + define void @stack_fold_xorpdrm_xorpdrr_test() #0 { ret void } + define void @stack_fold_xorpsrm_xorpsrr_test() #0 { ret void } +... +--- +name: stack_fold_extractpsmr_extractpsrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_extractpsmr_extractpsrr_test + ; CHECK: EXTRACTPSmr + %0 = EXTRACTPSrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_movapdmr_movapdrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_movapdmr_movapdrr_test + ; CHECK: MOVAPDmr + %0 = MOVAPDrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_movapsmr_movapsrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_movapsmr_movapsrr_test + ; CHECK: MOVAPSmr + %0 = MOVAPSrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_movdqamr_movdqarr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_movdqamr_movdqarr_test + ; CHECK: MOVDQAmr + %0 = MOVDQArr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_movdqumr_movdqurr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_movdqumr_movdqurr_test + ; CHECK: MOVDQUmr + %0 = MOVDQUrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_movpdi2dimr_movpdi2dirr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_movpdi2dimr_movpdi2dirr_test + ; CHECK: MOVPDI2DImr + %0 = MOVPDI2DIrr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_movpqi2qimr_movpqi2qirr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_movpqi2qimr_movpqi2qirr_test + ; CHECK: MOVPQI2QImr + %0 = MOVPQI2QIrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_movpqito64mr_movpqito64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_movpqito64mr_movpqito64rr_test + ; CHECK: MOVPQIto64mr + %0 = MOVPQIto64rr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_movsdto64mr_movsdto64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_movsdto64mr_movsdto64rr_test + ; CHECK: MOVSDto64mr + %0 = MOVSDto64rr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_movss2dimr_movss2dirr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_movss2dimr_movss2dirr_test + ; CHECK: MOVSS2DImr + %0 = MOVSS2DIrr undef %xmm0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_movupdmr_movupdrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_movupdmr_movupdrr_test + ; CHECK: MOVUPDmr + %0 = MOVUPDrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_movupsmr_movupsrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: vr128 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 16, alignment: 16 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_movupsmr_movupsrr_test + ; CHECK: MOVUPSmr + %0 = MOVUPSrr undef %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + MOVAPSmr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_pextrbmr_pextrbrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_pextrbmr_pextrbrr_test + ; CHECK: PEXTRBmr + %0 = PEXTRBrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_pextrdmr_pextrdrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_pextrdmr_pextrdrr_test + ; CHECK: PEXTRDmr + %0 = PEXTRDrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_pextrqmr_pextrqrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_pextrqmr_pextrqrr_test + ; CHECK: PEXTRQmr + %0 = PEXTRQrr undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_pextrwmr_pextrwri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_pextrwmr_pextrwri_test + ; CHECK: PEXTRWmr + %0 = PEXTRWri undef %xmm0, 0 + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_comisdrm_comisdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_comisdrm_comisdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: COMISDrm + COMISDrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_comissrm_comissrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_comissrm_comissrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: COMISSrm + COMISSrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cvtdq2pdrm_cvtdq2pdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_cvtdq2pdrm_cvtdq2pdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTDQ2PDrm + %xmm0 = CVTDQ2PDrr %1 + RET 0 +... +--- +name: stack_fold_cvtdq2psrm_cvtdq2psrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_cvtdq2psrm_cvtdq2psrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTDQ2PSrm + %xmm0 = CVTDQ2PSrr %1 + RET 0 +... +--- +name: stack_fold_cvtpd2dqrm_cvtpd2dqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_cvtpd2dqrm_cvtpd2dqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTPD2DQrm + %xmm0 = CVTPD2DQrr %1 + RET 0 +... +--- +name: stack_fold_cvtpd2psrm_cvtpd2psrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_cvtpd2psrm_cvtpd2psrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTPD2PSrm + %xmm0 = CVTPD2PSrr %1 + RET 0 +... +--- +name: stack_fold_cvtps2dqrm_cvtps2dqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_cvtps2dqrm_cvtps2dqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTPS2DQrm + %xmm0 = CVTPS2DQrr %1 + RET 0 +... +--- +name: stack_fold_cvtps2pdrm_cvtps2pdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_cvtps2pdrm_cvtps2pdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTPS2PDrm + %xmm0 = CVTPS2PDrr %1 + RET 0 +... +--- +name: stack_fold_cvtsd2si64rm_cvtsd2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_cvtsd2si64rm_cvtsd2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTSD2SI64rm + %rax = CVTSD2SI64rr %1 + RET 0 +... +--- +name: stack_fold_cvtsd2sirm_cvtsd2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_cvtsd2sirm_cvtsd2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTSD2SIrm + %eax = CVTSD2SIrr %1 + RET 0 +... +--- +name: stack_fold_cvtsd2ssrm_cvtsd2ssrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_cvtsd2ssrm_cvtsd2ssrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTSD2SSrm + %xmm0 = CVTSD2SSrr %1 + RET 0 +... +--- +name: stack_fold_cvtsi2sd64rm_cvtsi2sd64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_cvtsi2sd64rm_cvtsi2sd64rr_test + %1 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CVTSI2SD64rm + %xmm0 = CVTSI2SD64rr %1 + RET 0 +... +--- +name: stack_fold_cvtsi2sdrm_cvtsi2sdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_cvtsi2sdrm_cvtsi2sdrr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CVTSI2SDrm + %xmm0 = CVTSI2SDrr %1 + RET 0 +... +--- +name: stack_fold_cvtsi2ss64rm_cvtsi2ss64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_cvtsi2ss64rm_cvtsi2ss64rr_test + %1 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CVTSI2SS64rm + %xmm0 = CVTSI2SS64rr %1 + RET 0 +... +--- +name: stack_fold_cvtsi2ssrm_cvtsi2ssrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_cvtsi2ssrm_cvtsi2ssrr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CVTSI2SSrm + %xmm0 = CVTSI2SSrr %1 + RET 0 +... +--- +name: stack_fold_cvtss2sdrm_cvtss2sdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_cvtss2sdrm_cvtss2sdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTSS2SDrm + %xmm0 = CVTSS2SDrr %1 + RET 0 +... +--- +name: stack_fold_cvtss2si64rm_cvtss2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_cvtss2si64rm_cvtss2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTSS2SI64rm + %rax = CVTSS2SI64rr %1 + RET 0 +... +--- +name: stack_fold_cvtss2sirm_cvtss2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_cvtss2sirm_cvtss2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTSS2SIrm + %eax = CVTSS2SIrr %1 + RET 0 +... +--- +name: stack_fold_cvttpd2dqrm_cvttpd2dqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_cvttpd2dqrm_cvttpd2dqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTTPD2DQrm + %xmm0 = CVTTPD2DQrr %1 + RET 0 +... +--- +name: stack_fold_cvttps2dqrm_cvttps2dqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_cvttps2dqrm_cvttps2dqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTTPS2DQrm + %xmm0 = CVTTPS2DQrr %1 + RET 0 +... +--- +name: stack_fold_cvttsd2si64rm_cvttsd2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_cvttsd2si64rm_cvttsd2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTTSD2SI64rm + %rax = CVTTSD2SI64rr %1 + RET 0 +... +--- +name: stack_fold_cvttsd2sirm_cvttsd2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_cvttsd2sirm_cvttsd2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTTSD2SIrm + %eax = CVTTSD2SIrr %1 + RET 0 +... +--- +name: stack_fold_cvttss2si64rm_cvttss2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_cvttss2si64rm_cvttss2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTTSS2SI64rm + %rax = CVTTSS2SI64rr %1 + RET 0 +... +--- +name: stack_fold_cvttss2sirm_cvttss2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_cvttss2sirm_cvttss2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CVTTSS2SIrm + %eax = CVTTSS2SIrr %1 + RET 0 +... +--- +name: stack_fold_int_comisdrm_int_comisdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_comisdrm_int_comisdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_COMISDrm + Int_COMISDrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_int_comissrm_int_comissrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_comissrm_int_comissrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_COMISSrm + Int_COMISSrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_int_cvttsd2si64rm_int_cvttsd2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_int_cvttsd2si64rm_int_cvttsd2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_CVTTSD2SI64rm + %rax = Int_CVTTSD2SI64rr %1 + RET 0 +... +--- +name: stack_fold_int_cvttsd2sirm_int_cvttsd2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_int_cvttsd2sirm_int_cvttsd2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_CVTTSD2SIrm + %eax = Int_CVTTSD2SIrr %1 + RET 0 +... +--- +name: stack_fold_int_cvttss2si64rm_int_cvttss2si64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_int_cvttss2si64rm_int_cvttss2si64rr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_CVTTSS2SI64rm + %rax = Int_CVTTSS2SI64rr %1 + RET 0 +... +--- +name: stack_fold_int_cvttss2sirm_int_cvttss2sirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_int_cvttss2sirm_int_cvttss2sirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_CVTTSS2SIrm + %eax = Int_CVTTSS2SIrr %1 + RET 0 +... +--- +name: stack_fold_int_ucomisdrm_int_ucomisdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_ucomisdrm_int_ucomisdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_UCOMISDrm + Int_UCOMISDrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_int_ucomissrm_int_ucomissrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_int_ucomissrm_int_ucomissrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_UCOMISSrm + Int_UCOMISSrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_mmx_cvtpd2piirm_mmx_cvtpd2piirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_mmx_cvtpd2piirm_mmx_cvtpd2piirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MMX_CVTPD2PIirm + %mm0 = MMX_CVTPD2PIirr %1 + RET 0 +... +--- +name: stack_fold_mmx_cvtpi2pdirm_mmx_cvtpi2pdirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm0 + + ; CHECK-LABEL: name: stack_fold_mmx_cvtpi2pdirm_mmx_cvtpi2pdirr_test + %1 = COPY %mm0 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_CVTPI2PDirm + %xmm0 = MMX_CVTPI2PDirr %1 + RET 0 +... +--- +name: stack_fold_mmx_cvtps2piirm_mmx_cvtps2piirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_mmx_cvtps2piirm_mmx_cvtps2piirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MMX_CVTPS2PIirm + %mm0 = MMX_CVTPS2PIirr %1 + RET 0 +... +--- +name: stack_fold_mmx_cvttpd2piirm_mmx_cvttpd2piirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_mmx_cvttpd2piirm_mmx_cvttpd2piirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MMX_CVTTPD2PIirm + %mm0 = MMX_CVTTPD2PIirr %1 + RET 0 +... +--- +name: stack_fold_mmx_cvttps2piirm_mmx_cvttps2piirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm0', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm0 + + ; CHECK-LABEL: name: stack_fold_mmx_cvttps2piirm_mmx_cvttps2piirr_test + %1 = COPY %xmm0 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MMX_CVTTPS2PIirm + %mm0 = MMX_CVTTPS2PIirr %1 + RET 0 +... +--- +name: stack_fold_mmx_pabsbrm64_mmx_pabsbrr64_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_mmx_pabsbrm64_mmx_pabsbrr64_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PABSBrm64 + %mm0 = MMX_PABSBrr64 %1 + RET 0 +... +--- +name: stack_fold_mmx_pabsdrm64_mmx_pabsdrr64_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_mmx_pabsdrm64_mmx_pabsdrr64_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PABSDrm64 + %mm0 = MMX_PABSDrr64 %1 + RET 0 +... +--- +name: stack_fold_mmx_pabswrm64_mmx_pabswrr64_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr64 } +liveins: + - { reg: '%mm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %mm1 + + ; CHECK-LABEL: name: stack_fold_mmx_pabswrm64_mmx_pabswrr64_test + %1 = COPY %mm1 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PABSWrm64 + %mm0 = MMX_PABSWrr64 %1 + RET 0 +... +--- +name: stack_fold_mov64topqirm_mov64topqirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_mov64topqirm_mov64topqirr_test + %1 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOV64toPQIrm + %xmm0 = MOV64toPQIrr %1 + RET 0 +... +--- +name: stack_fold_movapdrm_movapdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_movapdrm_movapdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVAPDrm + %xmm0 = MOVAPDrr %1 + RET 0 +... +--- +name: stack_fold_movapsrm_movapsrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_movapsrm_movapsrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVAPSrm + %xmm0 = MOVAPSrr %1 + RET 0 +... +--- +name: stack_fold_movdduprm_movdduprr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_movdduprm_movdduprr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVDDUPrm + %xmm0 = MOVDDUPrr %1 + RET 0 +... +--- +name: stack_fold_movdi2pdirm_movdi2pdirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_movdi2pdirm_movdi2pdirr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVDI2PDIrm + %xmm0 = MOVDI2PDIrr %1 + RET 0 +... +--- +name: stack_fold_movdi2ssrm_movdi2ssrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_movdi2ssrm_movdi2ssrr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVDI2SSrm + %xmm0 = MOVDI2SSrr %1 + RET 0 +... +--- +name: stack_fold_movdqarm_movdqarr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_movdqarm_movdqarr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVDQArm + %xmm0 = MOVDQArr %1 + RET 0 +... +--- +name: stack_fold_movdqurm_movdqurr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_movdqurm_movdqurr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVDQUrm + %xmm0 = MOVDQUrr %1 + RET 0 +... +--- +name: stack_fold_movqi2pqirm_movzpqilo2pqirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_movqi2pqirm_movzpqilo2pqirr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVQI2PQIrm + %xmm0 = MOVZPQILo2PQIrr %1 + RET 0 +... +--- +name: stack_fold_movshduprm_movshduprr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_movshduprm_movshduprr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVSHDUPrm + %xmm0 = MOVSHDUPrr %1 + RET 0 +... +--- +name: stack_fold_movslduprm_movslduprr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_movslduprm_movslduprr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVSLDUPrm + %xmm0 = MOVSLDUPrr %1 + RET 0 +... +--- +name: stack_fold_movupdrm_movupdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_movupdrm_movupdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVUPDrm + %xmm0 = MOVUPDrr %1 + RET 0 +... +--- +name: stack_fold_movupsrm_movupsrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_movupsrm_movupsrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVUPSrm + %xmm0 = MOVUPSrr %1 + RET 0 +... +--- +name: stack_fold_pabsbrm_pabsbrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pabsbrm_pabsbrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PABSBrm + %xmm0 = PABSBrr %1 + RET 0 +... +--- +name: stack_fold_pabsdrm_pabsdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pabsdrm_pabsdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PABSDrm + %xmm0 = PABSDrr %1 + RET 0 +... +--- +name: stack_fold_pabswrm_pabswrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pabswrm_pabswrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PABSWrm + %xmm0 = PABSWrr %1 + RET 0 +... +--- +name: stack_fold_pcmpestrirm_pcmpestrirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pcmpestrirm_pcmpestrirr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPESTRIrm + PCMPESTRIrr undef %xmm0, %1, 0, implicit-def %ecx, implicit-def %eflags, implicit undef %eax, implicit undef %edx + RET 0 +... +--- +name: stack_fold_pcmpestrm128rm_pcmpestrm128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pcmpestrm128rm_pcmpestrm128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPESTRM128rm + PCMPESTRM128rr undef %xmm0, %1, 0, implicit-def %xmm0, implicit-def %eflags, implicit undef %eax, implicit undef %edx + RET 0 +... +--- +name: stack_fold_pcmpistrirm_pcmpistrirr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pcmpistrirm_pcmpistrirr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPISTRIrm + PCMPISTRIrr undef %xmm0, %1, 0, implicit-def %ecx, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_pcmpistrm128rm_pcmpistrm128rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pcmpistrm128rm_pcmpistrm128rr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPISTRM128rm + PCMPISTRM128rr undef %xmm0, %1, 0, implicit-def %xmm0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_phminposuwrm128_phminposuwrr128_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_phminposuwrm128_phminposuwrr128_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PHMINPOSUWrm128 + %xmm0 = PHMINPOSUWrr128 %1 + RET 0 +... +--- +name: stack_fold_pmovsxbdrm_pmovsxbdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovsxbdrm_pmovsxbdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVSXBDrm + %xmm0 = PMOVSXBDrr %1 + RET 0 +... +--- +name: stack_fold_pmovsxbqrm_pmovsxbqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovsxbqrm_pmovsxbqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVSXBQrm + %xmm0 = PMOVSXBQrr %1 + RET 0 +... +--- +name: stack_fold_pmovsxbwrm_pmovsxbwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovsxbwrm_pmovsxbwrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVSXBWrm + %xmm0 = PMOVSXBWrr %1 + RET 0 +... +--- +name: stack_fold_pmovsxdqrm_pmovsxdqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovsxdqrm_pmovsxdqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVSXDQrm + %xmm0 = PMOVSXDQrr %1 + RET 0 +... +--- +name: stack_fold_pmovsxwdrm_pmovsxwdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovsxwdrm_pmovsxwdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVSXWDrm + %xmm0 = PMOVSXWDrr %1 + RET 0 +... +--- +name: stack_fold_pmovsxwqrm_pmovsxwqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovsxwqrm_pmovsxwqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVSXWQrm + %xmm0 = PMOVSXWQrr %1 + RET 0 +... +--- +name: stack_fold_pmovzxbdrm_pmovzxbdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovzxbdrm_pmovzxbdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVZXBDrm + %xmm0 = PMOVZXBDrr %1 + RET 0 +... +--- +name: stack_fold_pmovzxbqrm_pmovzxbqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovzxbqrm_pmovzxbqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVZXBQrm + %xmm0 = PMOVZXBQrr %1 + RET 0 +... +--- +name: stack_fold_pmovzxbwrm_pmovzxbwrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovzxbwrm_pmovzxbwrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVZXBWrm + %xmm0 = PMOVZXBWrr %1 + RET 0 +... +--- +name: stack_fold_pmovzxdqrm_pmovzxdqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovzxdqrm_pmovzxdqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVZXDQrm + %xmm0 = PMOVZXDQrr %1 + RET 0 +... +--- +name: stack_fold_pmovzxwdrm_pmovzxwdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovzxwdrm_pmovzxwdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVZXWDrm + %xmm0 = PMOVZXWDrr %1 + RET 0 +... +--- +name: stack_fold_pmovzxwqrm_pmovzxwqrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pmovzxwqrm_pmovzxwqrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMOVZXWQrm + %xmm0 = PMOVZXWQrr %1 + RET 0 +... +--- +name: stack_fold_pshufdmi_pshufdri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pshufdmi_pshufdri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSHUFDmi + %xmm0 = PSHUFDri %1, 0 + RET 0 +... +--- +name: stack_fold_pshufhwmi_pshufhwri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pshufhwmi_pshufhwri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSHUFHWmi + %xmm0 = PSHUFHWri %1, 0 + RET 0 +... +--- +name: stack_fold_pshuflwmi_pshuflwri_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_pshuflwmi_pshuflwri_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSHUFLWmi + %xmm0 = PSHUFLWri %1, 0 + RET 0 +... +--- +name: stack_fold_ptestrm_ptestrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_ptestrm_ptestrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PTESTrm + PTESTrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_rcppsm_rcppsr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_rcppsm_rcppsr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: RCPPSm + %xmm0 = RCPPSr %1 + RET 0 +... +--- +name: stack_fold_rcpssm_rcpssr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_rcpssm_rcpssr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: RCPSSm + %xmm0 = RCPSSr %1 + RET 0 +... +--- +name: stack_fold_roundpdm_roundpdr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_roundpdm_roundpdr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ROUNDPDm + %xmm0 = ROUNDPDr %1, 0 + RET 0 +... +--- +name: stack_fold_roundpsm_roundpsr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_roundpsm_roundpsr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ROUNDPSm + %xmm0 = ROUNDPSr %1, 0 + RET 0 +... +--- +name: stack_fold_roundsdm_roundsdr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_roundsdm_roundsdr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ROUNDSDm + %xmm0 = ROUNDSDr %1, 0 + RET 0 +... +--- +name: stack_fold_roundssm_roundssr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_roundssm_roundssr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ROUNDSSm + %xmm0 = ROUNDSSr %1, 0 + RET 0 +... +--- +name: stack_fold_rsqrtpsm_rsqrtpsr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_rsqrtpsm_rsqrtpsr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: RSQRTPSm + %xmm0 = RSQRTPSr %1 + RET 0 +... +--- +name: stack_fold_rsqrtssm_rsqrtssr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_rsqrtssm_rsqrtssr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: RSQRTSSm + %xmm0 = RSQRTSSr %1 + RET 0 +... +--- +name: stack_fold_sqrtpdm_sqrtpdr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_sqrtpdm_sqrtpdr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SQRTPDm + %xmm0 = SQRTPDr %1 + RET 0 +... +--- +name: stack_fold_sqrtpsm_sqrtpsr_test +tracksRegLiveness: true +registers: + - { id: 1, class: vr128 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_sqrtpsm_sqrtpsr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SQRTPSm + %xmm0 = SQRTPSr %1 + RET 0 +... +--- +name: stack_fold_sqrtsdm_sqrtsdr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_sqrtsdm_sqrtsdr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SQRTSDm + %xmm0 = SQRTSDr %1 + RET 0 +... +--- +name: stack_fold_sqrtssm_sqrtssr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_sqrtssm_sqrtssr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SQRTSSm + %xmm0 = SQRTSSr %1 + RET 0 +... +--- +name: stack_fold_ucomisdrm_ucomisdrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr64 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_ucomisdrm_ucomisdrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: UCOMISDrm + UCOMISDrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_ucomissrm_ucomissrr_test +tracksRegLiveness: true +registers: + - { id: 1, class: fr32 } +liveins: + - { reg: '%xmm1', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm1 + + ; CHECK-LABEL: name: stack_fold_ucomissrm_ucomissrr_test + %1 = COPY %xmm1 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: UCOMISSrm + UCOMISSrr undef %xmm0, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_addpdrm_addpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_addpdrm_addpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ADDPDrm + %xmm0 = ADDPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_addpsrm_addpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_addpsrm_addpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ADDPSrm + %xmm0 = ADDPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_addsdrm_addsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_addsdrm_addsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ADDSDrm + %xmm0 = ADDSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_addsdrm_int_addsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_addsdrm_int_addsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ADDSDrm_Int + %xmm0 = ADDSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_addssrm_addssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_addssrm_addssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ADDSSrm + %xmm0 = ADDSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_addssrm_int_addssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_addssrm_int_addssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ADDSSrm_Int + %xmm0 = ADDSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_addsubpdrm_addsubpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_addsubpdrm_addsubpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ADDSUBPDrm + %xmm0 = ADDSUBPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_addsubpsrm_addsubpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_addsubpsrm_addsubpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ADDSUBPSrm + %xmm0 = ADDSUBPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_andnpdrm_andnpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_andnpdrm_andnpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ANDNPDrm + %xmm0 = ANDNPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_andnpsrm_andnpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_andnpsrm_andnpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ANDNPSrm + %xmm0 = ANDNPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_andpdrm_andpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_andpdrm_andpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ANDPDrm + %xmm0 = ANDPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_andpsrm_andpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_andpsrm_andpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ANDPSrm + %xmm0 = ANDPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_blendpdrmi_blendpdrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_blendpdrmi_blendpdrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: BLENDPDrmi + %xmm0 = BLENDPDrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_blendpsrmi_blendpsrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_blendpsrmi_blendpsrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: BLENDPSrmi + %xmm0 = BLENDPSrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_blendvpdrm0_blendvpdrr0_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_blendvpdrm0_blendvpdrr0_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: BLENDVPDrm0 + %xmm0 = BLENDVPDrr0 undef %xmm1, %2, implicit undef %xmm0 + RET 0 +... +--- +name: stack_fold_blendvpsrm0_blendvpsrr0_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_blendvpsrm0_blendvpsrr0_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: BLENDVPSrm0 + %xmm0 = BLENDVPSrr0 undef %xmm1, %2, implicit undef %xmm0 + RET 0 +... +--- +name: stack_fold_cmppdrmi_cmppdrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_cmppdrmi_cmppdrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CMPPDrmi + %xmm0 = CMPPDrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_cmppdrmi_alt_cmppdrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_cmppdrmi_alt_cmppdrri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CMPPDrmi_alt + %xmm0 = CMPPDrri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_cmppsrmi_cmppsrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_cmppsrmi_cmppsrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CMPPSrmi + %xmm0 = CMPPSrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_cmppsrmi_alt_cmppsrri_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_cmppsrmi_alt_cmppsrri_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CMPPSrmi_alt + %xmm0 = CMPPSrri_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_cmpsdrm_cmpsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_cmpsdrm_cmpsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CMPSDrm + %xmm0 = CMPSDrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_cmpsdrm_alt_cmpsdrr_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_cmpsdrm_alt_cmpsdrr_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CMPSDrm_alt + %xmm0 = CMPSDrr_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_cmpssrm_cmpssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_cmpssrm_cmpssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CMPSSrm + %xmm0 = CMPSSrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_cmpssrm_alt_cmpssrr_alt_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_cmpssrm_alt_cmpssrr_alt_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: CMPSSrm_alt + %xmm0 = CMPSSrr_alt undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_crc32r32m16_crc32r32r16_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_crc32r32m16_crc32r32r16_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CRC32r32m16 + %eax = CRC32r32r16 undef %ebx, %2 + RET 0 +... +--- +name: stack_fold_crc32r32m32_crc32r32r32_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_crc32r32m32_crc32r32r32_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CRC32r32m32 + %eax = CRC32r32r32 undef %ebx, %2 + RET 0 +... +--- +name: stack_fold_crc32r32m8_crc32r32r8_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr8 } +liveins: + - { reg: '%cl', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_crc32r32m8_crc32r32r8_test + %2 = COPY %cl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CRC32r32m8 + %eax = CRC32r32r8 undef %ebx, %2 + RET 0 +... +--- +name: stack_fold_crc32r64m64_crc32r64r64_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_crc32r64m64_crc32r64r64_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CRC32r64m64 + %rax = CRC32r64r64 undef %rbx, %2 + RET 0 +... +--- +name: stack_fold_crc32r64m8_crc32r64r8_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr8 } +liveins: + - { reg: '%cl', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_crc32r64m8_crc32r64r8_test + %2 = COPY %cl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CRC32r64m8 + %rax = CRC32r64r8 undef %rbx, %2 + RET 0 +... +--- +name: stack_fold_divpdrm_divpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_divpdrm_divpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: DIVPDrm + %xmm0 = DIVPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_divpsrm_divpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_divpsrm_divpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: DIVPSrm + %xmm0 = DIVPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_divsdrm_divsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_divsdrm_divsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: DIVSDrm + %xmm0 = DIVSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_divsdrm_int_divsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_divsdrm_int_divsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: DIVSDrm_Int + %xmm0 = DIVSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_divssrm_divssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_divssrm_divssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: DIVSSrm + %xmm0 = DIVSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_divssrm_int_divssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_divssrm_int_divssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: DIVSSrm_Int + %xmm0 = DIVSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_dppdrmi_dppdrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_dppdrmi_dppdrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: DPPDrmi + %xmm0 = DPPDrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_dppsrmi_dppsrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_dppsrmi_dppsrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: DPPSrmi + %xmm0 = DPPSrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_haddpdrm_haddpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_haddpdrm_haddpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: HADDPDrm + %xmm0 = HADDPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_haddpsrm_haddpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_haddpsrm_haddpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: HADDPSrm + %xmm0 = HADDPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_hsubpdrm_hsubpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_hsubpdrm_hsubpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: HSUBPDrm + %xmm0 = HSUBPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_hsubpsrm_hsubpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_hsubpsrm_hsubpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: HSUBPSrm + %xmm0 = HSUBPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_insertpsrm_insertpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_insertpsrm_insertpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: INSERTPSrm + %xmm0 = INSERTPSrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_int_cmpsdrm_int_cmpsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_int_cmpsdrm_int_cmpsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_CMPSDrm + %xmm0 = Int_CMPSDrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_int_cmpssrm_int_cmpssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_int_cmpssrm_int_cmpssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_CMPSSrm + %xmm0 = Int_CMPSSrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_int_cvtsd2ssrm_int_cvtsd2ssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_int_cvtsd2ssrm_int_cvtsd2ssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_CVTSD2SSrm + %xmm0 = Int_CVTSD2SSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_int_cvtsi2sd64rm_int_cvtsi2sd64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_int_cvtsi2sd64rm_int_cvtsi2sd64rr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: Int_CVTSI2SD64rm + %xmm0 = Int_CVTSI2SD64rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_int_cvtsi2sdrm_int_cvtsi2sdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_int_cvtsi2sdrm_int_cvtsi2sdrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: Int_CVTSI2SDrm + %xmm0 = Int_CVTSI2SDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_int_cvtsi2ss64rm_int_cvtsi2ss64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_int_cvtsi2ss64rm_int_cvtsi2ss64rr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: Int_CVTSI2SS64rm + %xmm0 = Int_CVTSI2SS64rr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_int_cvtsi2ssrm_int_cvtsi2ssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_int_cvtsi2ssrm_int_cvtsi2ssrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: Int_CVTSI2SSrm + %xmm0 = Int_CVTSI2SSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_int_cvtss2sdrm_int_cvtss2sdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_int_cvtss2sdrm_int_cvtss2sdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: Int_CVTSS2SDrm + %xmm0 = Int_CVTSS2SDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_maxcpdrm_maxcpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_maxcpdrm_maxcpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MAXCPDrm + %xmm0 = MAXCPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_maxcpsrm_maxcpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_maxcpsrm_maxcpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MAXCPSrm + %xmm0 = MAXCPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_maxcsdrm_maxcsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_maxcsdrm_maxcsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MAXCSDrm + %xmm0 = MAXCSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_maxcssrm_maxcssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_maxcssrm_maxcssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MAXCSSrm + %xmm0 = MAXCSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_maxpdrm_maxpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_maxpdrm_maxpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MAXPDrm + %xmm0 = MAXPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_maxpsrm_maxpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_maxpsrm_maxpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MAXPSrm + %xmm0 = MAXPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_maxsdrm_maxsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_maxsdrm_maxsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MAXSDrm + %xmm0 = MAXSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_maxsdrm_int_maxsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_maxsdrm_int_maxsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MAXSDrm_Int + %xmm0 = MAXSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_maxssrm_maxssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_maxssrm_maxssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MAXSSrm + %xmm0 = MAXSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_maxssrm_int_maxssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_maxssrm_int_maxssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MAXSSrm_Int + %xmm0 = MAXSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mincpdrm_mincpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_mincpdrm_mincpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MINCPDrm + %xmm0 = MINCPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mincpsrm_mincpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_mincpsrm_mincpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MINCPSrm + %xmm0 = MINCPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mincsdrm_mincsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_mincsdrm_mincsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MINCSDrm + %xmm0 = MINCSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mincssrm_mincssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_mincssrm_mincssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MINCSSrm + %xmm0 = MINCSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_minpdrm_minpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_minpdrm_minpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MINPDrm + %xmm0 = MINPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_minpsrm_minpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_minpsrm_minpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MINPSrm + %xmm0 = MINPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_minsdrm_minsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_minsdrm_minsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MINSDrm + %xmm0 = MINSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_minsdrm_int_minsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_minsdrm_int_minsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MINSDrm_Int + %xmm0 = MINSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_minssrm_minssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_minssrm_minssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MINSSrm + %xmm0 = MINSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_minssrm_int_minssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_minssrm_int_minssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MINSSrm_Int + %xmm0 = MINSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_cvtpi2psirm_mmx_cvtpi2psirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm0', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm0 + + ; CHECK-LABEL: name: stack_fold_mmx_cvtpi2psirm_mmx_cvtpi2psirr_test + %2 = COPY %mm0 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_CVTPI2PSirm + %xmm0 = MMX_CVTPI2PSirr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_paddqirm_mmx_paddqirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_paddqirm_mmx_paddqirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PADDQirm + %mm0 = MMX_PADDQirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_palignr64irm_mmx_palignr64irr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_palignr64irm_mmx_palignr64irr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PALIGNR64irm + %mm0 = MMX_PALIGNR64irr undef %mm1, %2, 0 + RET 0 +... +--- +name: stack_fold_mmx_pavgbirm_mmx_pavgbirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pavgbirm_mmx_pavgbirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PAVGBirm + %mm0 = MMX_PAVGBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pavgwirm_mmx_pavgwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pavgwirm_mmx_pavgwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PAVGWirm + %mm0 = MMX_PAVGWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_phaddswrm64_mmx_phaddswrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_phaddswrm64_mmx_phaddswrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PHADDSWrm64 + %mm0 = MMX_PHADDSWrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_phaddwrm64_mmx_phaddwrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_phaddwrm64_mmx_phaddwrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PHADDWrm64 + %mm0 = MMX_PHADDWrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_phaddrm64_mmx_phaddrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_phaddrm64_mmx_phaddrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PHADDrm64 + %mm0 = MMX_PHADDrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_phsubdrm64_mmx_phsubdrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_phsubdrm64_mmx_phsubdrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PHSUBDrm64 + %mm0 = MMX_PHSUBDrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_phsubswrm64_mmx_phsubswrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_phsubswrm64_mmx_phsubswrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PHSUBSWrm64 + %mm0 = MMX_PHSUBSWrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_phsubwrm64_mmx_phsubwrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_phsubwrm64_mmx_phsubwrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PHSUBWrm64 + %mm0 = MMX_PHSUBWrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pinsrwirmi_mmx_pinsrwirri_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_mmx_pinsrwirmi_mmx_pinsrwirri_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MMX_PINSRWirmi + %mm0 = MMX_PINSRWirri undef %mm1, %2, 0 + RET 0 +... +--- +name: stack_fold_mmx_pmaddubswrm64_mmx_pmaddubswrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pmaddubswrm64_mmx_pmaddubswrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PMADDUBSWrm64 + %mm0 = MMX_PMADDUBSWrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pmaxswirm_mmx_pmaxswirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pmaxswirm_mmx_pmaxswirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PMAXSWirm + %mm0 = MMX_PMAXSWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pmaxubirm_mmx_pmaxubirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pmaxubirm_mmx_pmaxubirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PMAXUBirm + %mm0 = MMX_PMAXUBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pminswirm_mmx_pminswirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pminswirm_mmx_pminswirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PMINSWirm + %mm0 = MMX_PMINSWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pminubirm_mmx_pminubirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pminubirm_mmx_pminubirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PMINUBirm + %mm0 = MMX_PMINUBirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pmulhrswrm64_mmx_pmulhrswrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pmulhrswrm64_mmx_pmulhrswrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PMULHRSWrm64 + %mm0 = MMX_PMULHRSWrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pmulhuwirm_mmx_pmulhuwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pmulhuwirm_mmx_pmulhuwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PMULHUWirm + %mm0 = MMX_PMULHUWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pmuludqirm_mmx_pmuludqirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pmuludqirm_mmx_pmuludqirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PMULUDQirm + %mm0 = MMX_PMULUDQirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psadbwirm_mmx_psadbwirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psadbwirm_mmx_psadbwirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSADBWirm + %mm0 = MMX_PSADBWirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_pshufbrm64_mmx_pshufbrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_pshufbrm64_mmx_pshufbrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSHUFBrm64 + %mm0 = MMX_PSHUFBrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psignbrm64_mmx_psignbrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psignbrm64_mmx_psignbrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSIGNBrm64 + %mm0 = MMX_PSIGNBrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psigndrm64_mmx_psigndrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psigndrm64_mmx_psigndrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSIGNDrm64 + %mm0 = MMX_PSIGNDrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psignwrm64_mmx_psignwrr64_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psignwrm64_mmx_psignwrr64_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSIGNWrm64 + %mm0 = MMX_PSIGNWrr64 undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_mmx_psubqirm_mmx_psubqirr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr64 } +liveins: + - { reg: '%mm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %mm2 + + ; CHECK-LABEL: name: stack_fold_mmx_psubqirm_mmx_psubqirr_test + %2 = COPY %mm2 + INLINEASM $nop, 1, 12, implicit-def %mm0, 12, implicit-def %mm1, 12, implicit-def %mm2, 12, implicit-def %mm3, 12, implicit-def %mm4, 12, implicit-def %mm5, 12, implicit-def %mm6, 12, implicit-def %mm7 + ; CHECK: MMX_PSUBQirm + %mm0 = MMX_PSUBQirr undef %mm1, %2 + RET 0 +... +--- +name: stack_fold_movhpsrm_movlhpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_movhpsrm_movlhpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVHPSrm + %xmm0 = MOVLHPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_movlpsrm_movhlpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_movlpsrm_movhlpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MOVLPSrm + %xmm0 = MOVHLPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mpsadbwrmi_mpsadbwrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_mpsadbwrmi_mpsadbwrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MPSADBWrmi + %xmm0 = MPSADBWrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_mulpdrm_mulpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_mulpdrm_mulpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MULPDrm + %xmm0 = MULPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mulpsrm_mulpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_mulpsrm_mulpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MULPSrm + %xmm0 = MULPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mulsdrm_mulsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_mulsdrm_mulsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MULSDrm + %xmm0 = MULSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mulsdrm_int_mulsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_mulsdrm_int_mulsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MULSDrm_Int + %xmm0 = MULSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mulssrm_mulssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_mulssrm_mulssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MULSSrm + %xmm0 = MULSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_mulssrm_int_mulssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_mulssrm_int_mulssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: MULSSrm_Int + %xmm0 = MULSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_orpdrm_orpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_orpdrm_orpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ORPDrm + %xmm0 = ORPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_orpsrm_orpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_orpsrm_orpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ORPSrm + %xmm0 = ORPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_packssdwrm_packssdwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_packssdwrm_packssdwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PACKSSDWrm + %xmm0 = PACKSSDWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_packsswbrm_packsswbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_packsswbrm_packsswbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PACKSSWBrm + %xmm0 = PACKSSWBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_packusdwrm_packusdwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_packusdwrm_packusdwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PACKUSDWrm + %xmm0 = PACKUSDWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_packuswbrm_packuswbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_packuswbrm_packuswbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PACKUSWBrm + %xmm0 = PACKUSWBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_paddbrm_paddbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_paddbrm_paddbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PADDBrm + %xmm0 = PADDBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_padddrm_padddrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_padddrm_padddrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PADDDrm + %xmm0 = PADDDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_paddqrm_paddqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_paddqrm_paddqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PADDQrm + %xmm0 = PADDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_paddsbrm_paddsbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_paddsbrm_paddsbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PADDSBrm + %xmm0 = PADDSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_paddswrm_paddswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_paddswrm_paddswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PADDSWrm + %xmm0 = PADDSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_paddusbrm_paddusbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_paddusbrm_paddusbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PADDUSBrm + %xmm0 = PADDUSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_padduswrm_padduswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_padduswrm_padduswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PADDUSWrm + %xmm0 = PADDUSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_paddwrm_paddwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_paddwrm_paddwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PADDWrm + %xmm0 = PADDWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_palignrrmi_palignrrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_palignrrmi_palignrrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PALIGNRrmi + %xmm0 = PALIGNRrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_pandnrm_pandnrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pandnrm_pandnrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PANDNrm + %xmm0 = PANDNrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pandrm_pandrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pandrm_pandrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PANDrm + %xmm0 = PANDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pavgbrm_pavgbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pavgbrm_pavgbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PAVGBrm + %xmm0 = PAVGBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pavgwrm_pavgwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pavgwrm_pavgwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PAVGWrm + %xmm0 = PAVGWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pblendvbrm0_pblendvbrr0_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pblendvbrm0_pblendvbrr0_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PBLENDVBrm0 + %xmm0 = PBLENDVBrr0 undef %xmm1, %2, implicit undef %xmm0 + RET 0 +... +--- +name: stack_fold_pblendwrmi_pblendwrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pblendwrmi_pblendwrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PBLENDWrmi + %xmm0 = PBLENDWrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_pcmpeqbrm_pcmpeqbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pcmpeqbrm_pcmpeqbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPEQBrm + %xmm0 = PCMPEQBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pcmpeqdrm_pcmpeqdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pcmpeqdrm_pcmpeqdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPEQDrm + %xmm0 = PCMPEQDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pcmpeqqrm_pcmpeqqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pcmpeqqrm_pcmpeqqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPEQQrm + %xmm0 = PCMPEQQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pcmpeqwrm_pcmpeqwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pcmpeqwrm_pcmpeqwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPEQWrm + %xmm0 = PCMPEQWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pcmpgtbrm_pcmpgtbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pcmpgtbrm_pcmpgtbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPGTBrm + %xmm0 = PCMPGTBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pcmpgtdrm_pcmpgtdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pcmpgtdrm_pcmpgtdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPGTDrm + %xmm0 = PCMPGTDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pcmpgtqrm_pcmpgtqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pcmpgtqrm_pcmpgtqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPGTQrm + %xmm0 = PCMPGTQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pcmpgtwrm_pcmpgtwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pcmpgtwrm_pcmpgtwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PCMPGTWrm + %xmm0 = PCMPGTWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_phadddrm_phadddrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_phadddrm_phadddrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PHADDDrm + %xmm0 = PHADDDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_phaddswrm128_phaddswrr128_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_phaddswrm128_phaddswrr128_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PHADDSWrm128 + %xmm0 = PHADDSWrr128 undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_phaddwrm_phaddwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_phaddwrm_phaddwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PHADDWrm + %xmm0 = PHADDWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_phsubdrm_phsubdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_phsubdrm_phsubdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PHSUBDrm + %xmm0 = PHSUBDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_phsubswrm128_phsubswrr128_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_phsubswrm128_phsubswrr128_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PHSUBSWrm128 + %xmm0 = PHSUBSWrr128 undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_phsubwrm_phsubwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_phsubwrm_phsubwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PHSUBWrm + %xmm0 = PHSUBWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pinsrbrm_pinsrbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_pinsrbrm_pinsrbrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PINSRBrm + %xmm0 = PINSRBrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_pinsrdrm_pinsrdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_pinsrdrm_pinsrdrr_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PINSRDrm + %xmm0 = PINSRDrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_pinsrqrm_pinsrqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_pinsrqrm_pinsrqrr_test + %2 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PINSRQrm + %xmm0 = PINSRQrr undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_pinsrwrmi_pinsrwrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_pinsrwrmi_pinsrwrri_test + %2 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PINSRWrmi + %xmm0 = PINSRWrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_pmaddubswrm_pmaddubswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmaddubswrm_pmaddubswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMADDUBSWrm + %xmm0 = PMADDUBSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmaddwdrm_pmaddwdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmaddwdrm_pmaddwdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMADDWDrm + %xmm0 = PMADDWDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmaxsbrm_pmaxsbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmaxsbrm_pmaxsbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMAXSBrm + %xmm0 = PMAXSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmaxsdrm_pmaxsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmaxsdrm_pmaxsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMAXSDrm + %xmm0 = PMAXSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmaxswrm_pmaxswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmaxswrm_pmaxswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMAXSWrm + %xmm0 = PMAXSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmaxubrm_pmaxubrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmaxubrm_pmaxubrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMAXUBrm + %xmm0 = PMAXUBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmaxudrm_pmaxudrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmaxudrm_pmaxudrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMAXUDrm + %xmm0 = PMAXUDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmaxuwrm_pmaxuwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmaxuwrm_pmaxuwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMAXUWrm + %xmm0 = PMAXUWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pminsbrm_pminsbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pminsbrm_pminsbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMINSBrm + %xmm0 = PMINSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pminsdrm_pminsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pminsdrm_pminsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMINSDrm + %xmm0 = PMINSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pminswrm_pminswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pminswrm_pminswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMINSWrm + %xmm0 = PMINSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pminubrm_pminubrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pminubrm_pminubrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMINUBrm + %xmm0 = PMINUBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pminudrm_pminudrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pminudrm_pminudrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMINUDrm + %xmm0 = PMINUDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pminuwrm_pminuwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pminuwrm_pminuwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMINUWrm + %xmm0 = PMINUWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmuldqrm_pmuldqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmuldqrm_pmuldqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMULDQrm + %xmm0 = PMULDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmulhrswrm_pmulhrswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmulhrswrm_pmulhrswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMULHRSWrm + %xmm0 = PMULHRSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmulhuwrm_pmulhuwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmulhuwrm_pmulhuwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMULHUWrm + %xmm0 = PMULHUWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmulhwrm_pmulhwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmulhwrm_pmulhwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMULHWrm + %xmm0 = PMULHWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmulldrm_pmulldrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmulldrm_pmulldrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMULLDrm + %xmm0 = PMULLDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmullwrm_pmullwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmullwrm_pmullwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMULLWrm + %xmm0 = PMULLWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pmuludqrm_pmuludqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pmuludqrm_pmuludqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PMULUDQrm + %xmm0 = PMULUDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_porrm_porrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_porrm_porrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PORrm + %xmm0 = PORrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psadbwrm_psadbwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psadbwrm_psadbwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSADBWrm + %xmm0 = PSADBWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pshufbrm_pshufbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pshufbrm_pshufbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSHUFBrm + %xmm0 = PSHUFBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psignbrm128_psignbrr128_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psignbrm128_psignbrr128_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSIGNBrm128 + %xmm0 = PSIGNBrr128 undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psigndrm128_psigndrr128_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psigndrm128_psigndrr128_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSIGNDrm128 + %xmm0 = PSIGNDrr128 undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psignwrm128_psignwrr128_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psignwrm128_psignwrr128_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSIGNWrm128 + %xmm0 = PSIGNWrr128 undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pslldrm_pslldrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pslldrm_pslldrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSLLDrm + %xmm0 = PSLLDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psllqrm_psllqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psllqrm_psllqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSLLQrm + %xmm0 = PSLLQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psllwrm_psllwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psllwrm_psllwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSLLWrm + %xmm0 = PSLLWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psradrm_psradrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psradrm_psradrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSRADrm + %xmm0 = PSRADrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psrawrm_psrawrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psrawrm_psrawrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSRAWrm + %xmm0 = PSRAWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psrldrm_psrldrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psrldrm_psrldrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSRLDrm + %xmm0 = PSRLDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psrlqrm_psrlqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psrlqrm_psrlqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSRLQrm + %xmm0 = PSRLQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psrlwrm_psrlwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psrlwrm_psrlwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSRLWrm + %xmm0 = PSRLWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psubbrm_psubbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psubbrm_psubbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSUBBrm + %xmm0 = PSUBBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psubdrm_psubdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psubdrm_psubdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSUBDrm + %xmm0 = PSUBDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psubqrm_psubqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psubqrm_psubqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSUBQrm + %xmm0 = PSUBQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psubsbrm_psubsbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psubsbrm_psubsbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSUBSBrm + %xmm0 = PSUBSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psubswrm_psubswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psubswrm_psubswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSUBSWrm + %xmm0 = PSUBSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psubusbrm_psubusbrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psubusbrm_psubusbrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSUBUSBrm + %xmm0 = PSUBUSBrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psubuswrm_psubuswrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psubuswrm_psubuswrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSUBUSWrm + %xmm0 = PSUBUSWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_psubwrm_psubwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_psubwrm_psubwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PSUBWrm + %xmm0 = PSUBWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_punpckhbwrm_punpckhbwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_punpckhbwrm_punpckhbwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PUNPCKHBWrm + %xmm0 = PUNPCKHBWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_punpckhdqrm_punpckhdqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_punpckhdqrm_punpckhdqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PUNPCKHDQrm + %xmm0 = PUNPCKHDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_punpckhqdqrm_punpckhqdqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_punpckhqdqrm_punpckhqdqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PUNPCKHQDQrm + %xmm0 = PUNPCKHQDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_punpckhwdrm_punpckhwdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_punpckhwdrm_punpckhwdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PUNPCKHWDrm + %xmm0 = PUNPCKHWDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_punpcklbwrm_punpcklbwrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_punpcklbwrm_punpcklbwrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PUNPCKLBWrm + %xmm0 = PUNPCKLBWrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_punpckldqrm_punpckldqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_punpckldqrm_punpckldqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PUNPCKLDQrm + %xmm0 = PUNPCKLDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_punpcklqdqrm_punpcklqdqrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_punpcklqdqrm_punpcklqdqrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PUNPCKLQDQrm + %xmm0 = PUNPCKLQDQrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_punpcklwdrm_punpcklwdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_punpcklwdrm_punpcklwdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PUNPCKLWDrm + %xmm0 = PUNPCKLWDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_pxorrm_pxorrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_pxorrm_pxorrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: PXORrm + %xmm0 = PXORrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_roundsdm_int_roundsdr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_roundsdm_int_roundsdr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ROUNDSDm_Int + %xmm0 = ROUNDSDr_Int undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_roundssm_int_roundssr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_roundssm_int_roundssr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: ROUNDSSm_Int + %xmm0 = ROUNDSSr_Int undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_shufpdrmi_shufpdrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_shufpdrmi_shufpdrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SHUFPDrmi + %xmm0 = SHUFPDrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_shufpsrmi_shufpsrri_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_shufpsrmi_shufpsrri_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SHUFPSrmi + %xmm0 = SHUFPSrri undef %xmm1, %2, 0 + RET 0 +... +--- +name: stack_fold_subpdrm_subpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_subpdrm_subpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SUBPDrm + %xmm0 = SUBPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_subpsrm_subpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_subpsrm_subpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SUBPSrm + %xmm0 = SUBPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_subsdrm_subsdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr64 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_subsdrm_subsdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SUBSDrm + %xmm0 = SUBSDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_subsdrm_int_subsdrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_subsdrm_int_subsdrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SUBSDrm_Int + %xmm0 = SUBSDrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_subssrm_subssrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_subssrm_subssrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SUBSSrm + %xmm0 = SUBSSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_subssrm_int_subssrr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_subssrm_int_subssrr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SUBSSrm_Int + %xmm0 = SUBSSrr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_unpckhpdrm_unpckhpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_unpckhpdrm_unpckhpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: UNPCKHPDrm + %xmm0 = UNPCKHPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_unpckhpsrm_unpckhpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_unpckhpsrm_unpckhpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: UNPCKHPSrm + %xmm0 = UNPCKHPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_unpcklpdrm_unpcklpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_unpcklpdrm_unpcklpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: UNPCKLPDrm + %xmm0 = UNPCKLPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_unpcklpsrm_unpcklpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_unpcklpsrm_unpcklpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: UNPCKLPSrm + %xmm0 = UNPCKLPSrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_xorpdrm_xorpdrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_xorpdrm_xorpdrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: XORPDrm + %xmm0 = XORPDrr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_xorpsrm_xorpsrr_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_xorpsrm_xorpsrr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: XORPSrm + %xmm0 = XORPSrr undef %xmm1, %2 + RET 0 +... Index: test/CodeGen/X86/memoryFolding-x86.mir =================================================================== --- test/CodeGen/X86/memoryFolding-x86.mir +++ test/CodeGen/X86/memoryFolding-x86.mir @@ -0,0 +1,7918 @@ +# RUN: llc -run-pass greedy -stack-alignment=64 -o - %s | FileCheck %s +# Stack alignment set to 64 to enable folding of aligned mov instructions. +--- | + attributes #0 = { "target-features" = "+avx512f,+avx512bw,+avx512dq,+avx512vbmi" } + attributes #1 = { optsize "target-features" = "+avx512f,+avx512bw,+avx512dq,+avx512vbmi" } + define void @stack_fold_adc16mi_adc16ri_test() #0 { ret void } + define void @stack_fold_adc16mi8_adc16ri8_test() #0 { ret void } + define void @stack_fold_adc16mr_adc16rr_test() #0 { ret void } + define void @stack_fold_adc32mi_adc32ri_test() #0 { ret void } + define void @stack_fold_adc32mi8_adc32ri8_test() #0 { ret void } + define void @stack_fold_adc32mr_adc32rr_test() #0 { ret void } + define void @stack_fold_adc64mi32_adc64ri32_test() #0 { ret void } + define void @stack_fold_adc64mi8_adc64ri8_test() #0 { ret void } + define void @stack_fold_adc64mr_adc64rr_test() #0 { ret void } + define void @stack_fold_adc8mi_adc8ri_test() #0 { ret void } + define void @stack_fold_adc8mi8_adc8ri8_test() #0 { ret void } + define void @stack_fold_adc8mr_adc8rr_test() #0 { ret void } + define void @stack_fold_add16mi_add16ri_test() #0 { ret void } + define void @stack_fold_add16mi8_add16ri8_test() #0 { ret void } + define void @stack_fold_add16mr_add16rr_test() #0 { ret void } + define void @stack_fold_add32mi_add32ri_test() #0 { ret void } + define void @stack_fold_add32mi8_add32ri8_test() #0 { ret void } + define void @stack_fold_add32mr_add32rr_test() #0 { ret void } + define void @stack_fold_add64mi32_add64ri32_test() #0 { ret void } + define void @stack_fold_add64mi8_add64ri8_test() #0 { ret void } + define void @stack_fold_add64mr_add64rr_test() #0 { ret void } + define void @stack_fold_add8mi_add8ri_test() #0 { ret void } + define void @stack_fold_add8mi8_add8ri8_test() #0 { ret void } + define void @stack_fold_add8mr_add8rr_test() #0 { ret void } + define void @stack_fold_and16mi_and16ri_test() #0 { ret void } + define void @stack_fold_and16mi8_and16ri8_test() #0 { ret void } + define void @stack_fold_and16mr_and16rr_test() #0 { ret void } + define void @stack_fold_and32mi_and32ri_test() #0 { ret void } + define void @stack_fold_and32mi8_and32ri8_test() #0 { ret void } + define void @stack_fold_and32mr_and32rr_test() #0 { ret void } + define void @stack_fold_and64mi32_and64ri32_test() #0 { ret void } + define void @stack_fold_and64mi8_and64ri8_test() #0 { ret void } + define void @stack_fold_and64mr_and64rr_test() #0 { ret void } + define void @stack_fold_and8mi_and8ri_test() #0 { ret void } + define void @stack_fold_and8mi8_and8ri8_test() #0 { ret void } + define void @stack_fold_and8mr_and8rr_test() #0 { ret void } + define void @stack_fold_dec16m_dec16r_test() #0 { ret void } + define void @stack_fold_dec32m_dec32r_test() #0 { ret void } + define void @stack_fold_dec64m_dec64r_test() #0 { ret void } + define void @stack_fold_dec8m_dec8r_test() #0 { ret void } + define void @stack_fold_inc16m_inc16r_test() #0 { ret void } + define void @stack_fold_inc32m_inc32r_test() #0 { ret void } + define void @stack_fold_inc64m_inc64r_test() #0 { ret void } + define void @stack_fold_inc8m_inc8r_test() #0 { ret void } + define void @stack_fold_neg16m_neg16r_test() #0 { ret void } + define void @stack_fold_neg32m_neg32r_test() #0 { ret void } + define void @stack_fold_neg64m_neg64r_test() #0 { ret void } + define void @stack_fold_neg8m_neg8r_test() #0 { ret void } + define void @stack_fold_not16m_not16r_test() #0 { ret void } + define void @stack_fold_not32m_not32r_test() #0 { ret void } + define void @stack_fold_not64m_not64r_test() #0 { ret void } + define void @stack_fold_not8m_not8r_test() #0 { ret void } + define void @stack_fold_or16mi_or16ri_test() #0 { ret void } + define void @stack_fold_or16mi8_or16ri8_test() #0 { ret void } + define void @stack_fold_or16mr_or16rr_test() #0 { ret void } + define void @stack_fold_or32mi_or32ri_test() #0 { ret void } + define void @stack_fold_or32mi8_or32ri8_test() #0 { ret void } + define void @stack_fold_or32mr_or32rr_test() #0 { ret void } + define void @stack_fold_or64mi32_or64ri32_test() #0 { ret void } + define void @stack_fold_or64mi8_or64ri8_test() #0 { ret void } + define void @stack_fold_or64mr_or64rr_test() #0 { ret void } + define void @stack_fold_or8mi_or8ri_test() #0 { ret void } + define void @stack_fold_or8mi8_or8ri8_test() #0 { ret void } + define void @stack_fold_or8mr_or8rr_test() #0 { ret void } + define void @stack_fold_rcl16m1_rcl16r1_test() #0 { ret void } + define void @stack_fold_rcl16mcl_rcl16rcl_test() #0 { ret void } + define void @stack_fold_rcl16mi_rcl16ri_test() #0 { ret void } + define void @stack_fold_rcl32m1_rcl32r1_test() #0 { ret void } + define void @stack_fold_rcl32mcl_rcl32rcl_test() #0 { ret void } + define void @stack_fold_rcl32mi_rcl32ri_test() #0 { ret void } + define void @stack_fold_rcl64m1_rcl64r1_test() #0 { ret void } + define void @stack_fold_rcl64mcl_rcl64rcl_test() #0 { ret void } + define void @stack_fold_rcl64mi_rcl64ri_test() #0 { ret void } + define void @stack_fold_rcl8m1_rcl8r1_test() #0 { ret void } + define void @stack_fold_rcl8mcl_rcl8rcl_test() #0 { ret void } + define void @stack_fold_rcl8mi_rcl8ri_test() #0 { ret void } + define void @stack_fold_rcr16m1_rcr16r1_test() #0 { ret void } + define void @stack_fold_rcr16mcl_rcr16rcl_test() #0 { ret void } + define void @stack_fold_rcr16mi_rcr16ri_test() #0 { ret void } + define void @stack_fold_rcr32m1_rcr32r1_test() #0 { ret void } + define void @stack_fold_rcr32mcl_rcr32rcl_test() #0 { ret void } + define void @stack_fold_rcr32mi_rcr32ri_test() #0 { ret void } + define void @stack_fold_rcr64m1_rcr64r1_test() #0 { ret void } + define void @stack_fold_rcr64mcl_rcr64rcl_test() #0 { ret void } + define void @stack_fold_rcr64mi_rcr64ri_test() #0 { ret void } + define void @stack_fold_rcr8m1_rcr8r1_test() #0 { ret void } + define void @stack_fold_rcr8mcl_rcr8rcl_test() #0 { ret void } + define void @stack_fold_rcr8mi_rcr8ri_test() #0 { ret void } + define void @stack_fold_rol16m1_rol16r1_test() #0 { ret void } + define void @stack_fold_rol16mcl_rol16rcl_test() #0 { ret void } + define void @stack_fold_rol16mi_rol16ri_test() #0 { ret void } + define void @stack_fold_rol32m1_rol32r1_test() #0 { ret void } + define void @stack_fold_rol32mcl_rol32rcl_test() #0 { ret void } + define void @stack_fold_rol32mi_rol32ri_test() #0 { ret void } + define void @stack_fold_rol64m1_rol64r1_test() #0 { ret void } + define void @stack_fold_rol64mcl_rol64rcl_test() #0 { ret void } + define void @stack_fold_rol64mi_rol64ri_test() #0 { ret void } + define void @stack_fold_rol8m1_rol8r1_test() #0 { ret void } + define void @stack_fold_rol8mcl_rol8rcl_test() #0 { ret void } + define void @stack_fold_rol8mi_rol8ri_test() #0 { ret void } + define void @stack_fold_ror16m1_ror16r1_test() #0 { ret void } + define void @stack_fold_ror16mcl_ror16rcl_test() #0 { ret void } + define void @stack_fold_ror16mi_ror16ri_test() #0 { ret void } + define void @stack_fold_ror32m1_ror32r1_test() #0 { ret void } + define void @stack_fold_ror32mcl_ror32rcl_test() #0 { ret void } + define void @stack_fold_ror32mi_ror32ri_test() #0 { ret void } + define void @stack_fold_ror64m1_ror64r1_test() #0 { ret void } + define void @stack_fold_ror64mcl_ror64rcl_test() #0 { ret void } + define void @stack_fold_ror64mi_ror64ri_test() #0 { ret void } + define void @stack_fold_ror8m1_ror8r1_test() #0 { ret void } + define void @stack_fold_ror8mcl_ror8rcl_test() #0 { ret void } + define void @stack_fold_ror8mi_ror8ri_test() #0 { ret void } + define void @stack_fold_sar16m1_sar16r1_test() #0 { ret void } + define void @stack_fold_sar16mcl_sar16rcl_test() #0 { ret void } + define void @stack_fold_sar16mi_sar16ri_test() #0 { ret void } + define void @stack_fold_sar32m1_sar32r1_test() #0 { ret void } + define void @stack_fold_sar32mcl_sar32rcl_test() #0 { ret void } + define void @stack_fold_sar32mi_sar32ri_test() #0 { ret void } + define void @stack_fold_sar64m1_sar64r1_test() #0 { ret void } + define void @stack_fold_sar64mcl_sar64rcl_test() #0 { ret void } + define void @stack_fold_sar64mi_sar64ri_test() #0 { ret void } + define void @stack_fold_sar8m1_sar8r1_test() #0 { ret void } + define void @stack_fold_sar8mcl_sar8rcl_test() #0 { ret void } + define void @stack_fold_sar8mi_sar8ri_test() #0 { ret void } + define void @stack_fold_sbb16mi_sbb16ri_test() #0 { ret void } + define void @stack_fold_sbb16mi8_sbb16ri8_test() #0 { ret void } + define void @stack_fold_sbb16mr_sbb16rr_test() #0 { ret void } + define void @stack_fold_sbb32mi_sbb32ri_test() #0 { ret void } + define void @stack_fold_sbb32mi8_sbb32ri8_test() #0 { ret void } + define void @stack_fold_sbb32mr_sbb32rr_test() #0 { ret void } + define void @stack_fold_sbb64mi32_sbb64ri32_test() #0 { ret void } + define void @stack_fold_sbb64mi8_sbb64ri8_test() #0 { ret void } + define void @stack_fold_sbb64mr_sbb64rr_test() #0 { ret void } + define void @stack_fold_sbb8mi_sbb8ri_test() #0 { ret void } + define void @stack_fold_sbb8mi8_sbb8ri8_test() #0 { ret void } + define void @stack_fold_sbb8mr_sbb8rr_test() #0 { ret void } + define void @stack_fold_shl16m1_shl16r1_test() #0 { ret void } + define void @stack_fold_shl16mcl_shl16rcl_test() #0 { ret void } + define void @stack_fold_shl16mi_shl16ri_test() #0 { ret void } + define void @stack_fold_shl32m1_shl32r1_test() #0 { ret void } + define void @stack_fold_shl32mcl_shl32rcl_test() #0 { ret void } + define void @stack_fold_shl32mi_shl32ri_test() #0 { ret void } + define void @stack_fold_shl64m1_shl64r1_test() #0 { ret void } + define void @stack_fold_shl64mcl_shl64rcl_test() #0 { ret void } + define void @stack_fold_shl64mi_shl64ri_test() #0 { ret void } + define void @stack_fold_shl8m1_shl8r1_test() #0 { ret void } + define void @stack_fold_shl8mcl_shl8rcl_test() #0 { ret void } + define void @stack_fold_shl8mi_shl8ri_test() #0 { ret void } + define void @stack_fold_shld16mrcl_shld16rrcl_test() #0 { ret void } + define void @stack_fold_shld16mri8_shld16rri8_test() #0 { ret void } + define void @stack_fold_shld32mrcl_shld32rrcl_test() #0 { ret void } + define void @stack_fold_shld32mri8_shld32rri8_test() #0 { ret void } + define void @stack_fold_shld64mrcl_shld64rrcl_test() #0 { ret void } + define void @stack_fold_shld64mri8_shld64rri8_test() #0 { ret void } + define void @stack_fold_shr16m1_shr16r1_test() #0 { ret void } + define void @stack_fold_shr16mcl_shr16rcl_test() #0 { ret void } + define void @stack_fold_shr16mi_shr16ri_test() #0 { ret void } + define void @stack_fold_shr32m1_shr32r1_test() #0 { ret void } + define void @stack_fold_shr32mcl_shr32rcl_test() #0 { ret void } + define void @stack_fold_shr32mi_shr32ri_test() #0 { ret void } + define void @stack_fold_shr64m1_shr64r1_test() #0 { ret void } + define void @stack_fold_shr64mcl_shr64rcl_test() #0 { ret void } + define void @stack_fold_shr64mi_shr64ri_test() #0 { ret void } + define void @stack_fold_shr8m1_shr8r1_test() #0 { ret void } + define void @stack_fold_shr8mcl_shr8rcl_test() #0 { ret void } + define void @stack_fold_shr8mi_shr8ri_test() #0 { ret void } + define void @stack_fold_shrd16mrcl_shrd16rrcl_test() #0 { ret void } + define void @stack_fold_shrd16mri8_shrd16rri8_test() #0 { ret void } + define void @stack_fold_shrd32mrcl_shrd32rrcl_test() #0 { ret void } + define void @stack_fold_shrd32mri8_shrd32rri8_test() #0 { ret void } + define void @stack_fold_shrd64mrcl_shrd64rrcl_test() #0 { ret void } + define void @stack_fold_shrd64mri8_shrd64rri8_test() #0 { ret void } + define void @stack_fold_sub16mi_sub16ri_test() #0 { ret void } + define void @stack_fold_sub16mi8_sub16ri8_test() #0 { ret void } + define void @stack_fold_sub16mr_sub16rr_test() #0 { ret void } + define void @stack_fold_sub32mi_sub32ri_test() #0 { ret void } + define void @stack_fold_sub32mi8_sub32ri8_test() #0 { ret void } + define void @stack_fold_sub32mr_sub32rr_test() #0 { ret void } + define void @stack_fold_sub64mi32_sub64ri32_test() #0 { ret void } + define void @stack_fold_sub64mi8_sub64ri8_test() #0 { ret void } + define void @stack_fold_sub64mr_sub64rr_test() #0 { ret void } + define void @stack_fold_sub8mi_sub8ri_test() #0 { ret void } + define void @stack_fold_sub8mi8_sub8ri8_test() #0 { ret void } + define void @stack_fold_sub8mr_sub8rr_test() #0 { ret void } + define void @stack_fold_xor16mi_xor16ri_test() #0 { ret void } + define void @stack_fold_xor16mi8_xor16ri8_test() #0 { ret void } + define void @stack_fold_xor16mr_xor16rr_test() #0 { ret void } + define void @stack_fold_xor32mi_xor32ri_test() #0 { ret void } + define void @stack_fold_xor32mi8_xor32ri8_test() #0 { ret void } + define void @stack_fold_xor32mr_xor32rr_test() #0 { ret void } + define void @stack_fold_xor64mi32_xor64ri32_test() #0 { ret void } + define void @stack_fold_xor64mi8_xor64ri8_test() #0 { ret void } + define void @stack_fold_xor64mr_xor64rr_test() #0 { ret void } + define void @stack_fold_xor8mi_xor8ri_test() #0 { ret void } + define void @stack_fold_xor8mi8_xor8ri8_test() #0 { ret void } + define void @stack_fold_xor8mr_xor8rr_test() #0 { ret void } + define void @stack_fold_add16mi_add16ri_db_test() #0 { ret void } + define void @stack_fold_add16mi8_add16ri8_db_test() #0 { ret void } + define void @stack_fold_add16mr_add16rr_db_test() #0 { ret void } + define void @stack_fold_add32mi_add32ri_db_test() #0 { ret void } + define void @stack_fold_add32mi8_add32ri8_db_test() #0 { ret void } + define void @stack_fold_add32mr_add32rr_db_test() #0 { ret void } + define void @stack_fold_add64mi32_add64ri32_db_test() #0 { ret void } + define void @stack_fold_add64mi8_add64ri8_db_test() #0 { ret void } + define void @stack_fold_add64mr_add64rr_db_test() #0 { ret void } + define void @stack_fold_arpl16mr_arpl16rr_test() #0 { ret void } + define void @stack_fold_call16m_call16r_test() #0 { ret void } + define void @stack_fold_call32m_call32r_test() #0 { ret void } + define void @stack_fold_call64m_call64r_test() #0 { ret void } + define void @stack_fold_cmp16mi_cmp16ri_test() #0 { ret void } + define void @stack_fold_cmp16mi8_cmp16ri8_test() #0 { ret void } + define void @stack_fold_cmp16mr_cmp16rr_test() #0 { ret void } + define void @stack_fold_cmp32mi_cmp32ri_test() #0 { ret void } + define void @stack_fold_cmp32mi8_cmp32ri8_test() #0 { ret void } + define void @stack_fold_cmp32mr_cmp32rr_test() #0 { ret void } + define void @stack_fold_cmp64mi32_cmp64ri32_test() #0 { ret void } + define void @stack_fold_cmp64mi8_cmp64ri8_test() #0 { ret void } + define void @stack_fold_cmp64mr_cmp64rr_test() #0 { ret void } + define void @stack_fold_cmp8mi_cmp8ri_test() #0 { ret void } + define void @stack_fold_cmp8mi8_cmp8ri8_test() #0 { ret void } + define void @stack_fold_cmp8mr_cmp8rr_test() #0 { ret void } + define void @stack_fold_cmpxchg16rm_cmpxchg16rr_test() #0 { ret void } + define void @stack_fold_cmpxchg32rm_cmpxchg32rr_test() #0 { ret void } + define void @stack_fold_cmpxchg64rm_cmpxchg64rr_test() #0 { ret void } + define void @stack_fold_cmpxchg8rm_cmpxchg8rr_test() #0 { ret void } + define void @stack_fold_div16m_div16r_test() #0 { ret void } + define void @stack_fold_div32m_div32r_test() #0 { ret void } + define void @stack_fold_div64m_div64r_test() #0 { ret void } + define void @stack_fold_div8m_div8r_test() #0 { ret void } + define void @stack_fold_idiv16m_idiv16r_test() #0 { ret void } + define void @stack_fold_idiv32m_idiv32r_test() #0 { ret void } + define void @stack_fold_idiv64m_idiv64r_test() #0 { ret void } + define void @stack_fold_idiv8m_idiv8r_test() #0 { ret void } + define void @stack_fold_imul16m_imul16r_test() #0 { ret void } + define void @stack_fold_imul32m_imul32r_test() #0 { ret void } + define void @stack_fold_imul64m_imul64r_test() #0 { ret void } + define void @stack_fold_imul8m_imul8r_test() #0 { ret void } + define void @stack_fold_jmp16m_jmp16r_test() #0 { ret void } + define void @stack_fold_jmp32m_jmp32r_test() #0 { ret void } + define void @stack_fold_jmp64m_jmp64r_test() #0 { ret void } + define void @stack_fold_lldt16m_lldt16r_test() #0 { ret void } + define void @stack_fold_lmsw16m_lmsw16r_test() #0 { ret void } + define void @stack_fold_ltrm_ltrr_test() #0 { ret void } + define void @stack_fold_mov16mr_mov16rr_test() #0 { ret void } + define void @stack_fold_mov16ms_mov16rs_test() #0 { ret void } + define void @stack_fold_mov32mr_mov32rr_test() #0 { ret void } + define void @stack_fold_mov32ms_mov32rs_test() #0 { ret void } + define void @stack_fold_mov64mr_mov64rr_test() #0 { ret void } + define void @stack_fold_mov64ms_mov64rs_test() #0 { ret void } + define void @stack_fold_mov8mr_mov8rr_test() #0 { ret void } + define void @stack_fold_mov8mr_norex_mov8rr_norex_test() #0 { ret void } + define void @stack_fold_mul16m_mul16r_test() #0 { ret void } + define void @stack_fold_mul32m_mul32r_test() #0 { ret void } + define void @stack_fold_mul64m_mul64r_test() #0 { ret void } + define void @stack_fold_mul8m_mul8r_test() #0 { ret void } + define void @stack_fold_pop16rmm_pop16rmr_test() #0 { ret void } + define void @stack_fold_pop32rmm_pop32rmr_test() #0 { ret void } + define void @stack_fold_pop64rmm_pop64rmr_test() #0 { ret void } + define void @stack_fold_push16rmm_push16rmr_test() #0 { ret void } + define void @stack_fold_push32rmm_push32rmr_test() #0 { ret void } + define void @stack_fold_push64rmm_push64rmr_test() #0 { ret void } + define void @stack_fold_setaem_setaer_test() #0 { ret void } + define void @stack_fold_setam_setar_test() #0 { ret void } + define void @stack_fold_setbem_setber_test() #0 { ret void } + define void @stack_fold_setbm_setbr_test() #0 { ret void } + define void @stack_fold_setem_seter_test() #0 { ret void } + define void @stack_fold_setgem_setger_test() #0 { ret void } + define void @stack_fold_setgm_setgr_test() #0 { ret void } + define void @stack_fold_setlem_setler_test() #0 { ret void } + define void @stack_fold_setlm_setlr_test() #0 { ret void } + define void @stack_fold_setnem_setner_test() #0 { ret void } + define void @stack_fold_setnom_setnor_test() #0 { ret void } + define void @stack_fold_setnpm_setnpr_test() #0 { ret void } + define void @stack_fold_setnsm_setnsr_test() #0 { ret void } + define void @stack_fold_setom_setor_test() #0 { ret void } + define void @stack_fold_setpm_setpr_test() #0 { ret void } + define void @stack_fold_setsm_setsr_test() #0 { ret void } + define void @stack_fold_sldt64m_sldt64r_test() #0 { ret void } + define void @stack_fold_tailjmpm_tailjmpr_test() #0 { ret void } + define void @stack_fold_tailjmpm64_tailjmpr64_test() #0 { ret void } + define void @stack_fold_tailjmpm64_rex_tailjmpr64_rex_test() #0 { ret void } + define void @stack_fold_test16mi_test16ri_test() #0 { ret void } + define void @stack_fold_test32mi_test32ri_test() #0 { ret void } + define void @stack_fold_test64mi32_test64ri32_test() #0 { ret void } + define void @stack_fold_test8mi_test8ri_test() #0 { ret void } + define void @stack_fold_verrm_verrr_test() #0 { ret void } + define void @stack_fold_verwm_verwr_test() #0 { ret void } + define void @stack_fold_vmread32mr_vmread32rr_test() #0 { ret void } + define void @stack_fold_vmread64mr_vmread64rr_test() #0 { ret void } + define void @stack_fold_xadd16rm_xadd16rr_test() #0 { ret void } + define void @stack_fold_xadd32rm_xadd32rr_test() #0 { ret void } + define void @stack_fold_xadd64rm_xadd64rr_test() #0 { ret void } + define void @stack_fold_xadd8rm_xadd8rr_test() #0 { ret void } + define void @stack_fold_push16rmm_push16r_test() #0 { ret void } + define void @stack_fold_push32rmm_push32r_test() #0 { ret void } + define void @stack_fold_push64rmm_push64r_test() #0 { ret void } + define void @stack_fold_bsf16rm_bsf16rr_test() #0 { ret void } + define void @stack_fold_bsf32rm_bsf32rr_test() #0 { ret void } + define void @stack_fold_bsf64rm_bsf64rr_test() #0 { ret void } + define void @stack_fold_bsr16rm_bsr16rr_test() #0 { ret void } + define void @stack_fold_bsr32rm_bsr32rr_test() #0 { ret void } + define void @stack_fold_bsr64rm_bsr64rr_test() #0 { ret void } + define void @stack_fold_cmp16rm_cmp16rr_test() #0 { ret void } + define void @stack_fold_cmp32rm_cmp32rr_test() #0 { ret void } + define void @stack_fold_cmp64rm_cmp64rr_test() #0 { ret void } + define void @stack_fold_cmp8rm_cmp8rr_test() #0 { ret void } + define void @stack_fold_imul16rmi_imul16rri_test() #0 { ret void } + define void @stack_fold_imul16rmi8_imul16rri8_test() #0 { ret void } + define void @stack_fold_imul32rmi_imul32rri_test() #0 { ret void } + define void @stack_fold_imul32rmi8_imul32rri8_test() #0 { ret void } + define void @stack_fold_imul64rmi32_imul64rri32_test() #0 { ret void } + define void @stack_fold_imul64rmi8_imul64rri8_test() #0 { ret void } + define void @stack_fold_lar16rm_lar16rr_test() #0 { ret void } + define void @stack_fold_lar32rm_lar32rr_test() #0 { ret void } + define void @stack_fold_lar64rm_lar64rr_test() #0 { ret void } + define void @stack_fold_lsl16rm_lsl16rr_test() #0 { ret void } + define void @stack_fold_lsl32rm_lsl32rr_test() #0 { ret void } + define void @stack_fold_lsl64rm_lsl64rr_test() #0 { ret void } + define void @stack_fold_mov16rm_mov16rr_test() #0 { ret void } + define void @stack_fold_mov16sm_mov16sr_test() #0 { ret void } + define void @stack_fold_mov32rm_mov32rr_test() #0 { ret void } + define void @stack_fold_mov32sm_mov32sr_test() #0 { ret void } + define void @stack_fold_mov64rm_mov64rr_test() #0 { ret void } + define void @stack_fold_mov64sm_mov64sr_test() #0 { ret void } + define void @stack_fold_mov8rm_mov8rr_test() #0 { ret void } + define void @stack_fold_movsx16rm8_movsx16rr8_test() #0 { ret void } + define void @stack_fold_movsx32_norexrm8_movsx32_norexrr8_test() #0 { ret void } + define void @stack_fold_movsx32rm16_movsx32rr16_test() #0 { ret void } + define void @stack_fold_movsx32rm8_movsx32rr8_test() #0 { ret void } + define void @stack_fold_movsx64rm16_movsx64rr16_test() #0 { ret void } + define void @stack_fold_movsx64rm32_movsx64rr32_test() #0 { ret void } + define void @stack_fold_movsx64rm8_movsx64rr8_test() #0 { ret void } + define void @stack_fold_movzx16rm8_movzx16rr8_test() #0 { ret void } + define void @stack_fold_movzx32_norexrm8_movzx32_norexrr8_test() #0 { ret void } + define void @stack_fold_movzx32rm16_movzx32rr16_test() #0 { ret void } + define void @stack_fold_movzx32rm8_movzx32rr8_test() #0 { ret void } + define void @stack_fold_movzx64rm16_movzx64rr16_test() #0 { ret void } + define void @stack_fold_movzx64rm8_movzx64rr8_test() #0 { ret void } + define void @stack_fold_vmwrite32rm_vmwrite32rr_test() #0 { ret void } + define void @stack_fold_vmwrite64rm_vmwrite64rr_test() #0 { ret void } + define void @stack_fold_adc16rm_adc16rr_test() #0 { ret void } + define void @stack_fold_adc32rm_adc32rr_test() #0 { ret void } + define void @stack_fold_adc64rm_adc64rr_test() #0 { ret void } + define void @stack_fold_adc8rm_adc8rr_test() #0 { ret void } + define void @stack_fold_add16rm_add16rr_test() #0 { ret void } + define void @stack_fold_add32rm_add32rr_test() #0 { ret void } + define void @stack_fold_add64rm_add64rr_test() #0 { ret void } + define void @stack_fold_add8rm_add8rr_test() #0 { ret void } + define void @stack_fold_and16rm_and16rr_test() #0 { ret void } + define void @stack_fold_and32rm_and32rr_test() #0 { ret void } + define void @stack_fold_and64rm_and64rr_test() #0 { ret void } + define void @stack_fold_and8rm_and8rr_test() #0 { ret void } + define void @stack_fold_imul16rm_imul16rr_test() #0 { ret void } + define void @stack_fold_imul32rm_imul32rr_test() #0 { ret void } + define void @stack_fold_imul64rm_imul64rr_test() #0 { ret void } + define void @stack_fold_or16rm_or16rr_test() #0 { ret void } + define void @stack_fold_or32rm_or32rr_test() #0 { ret void } + define void @stack_fold_or64rm_or64rr_test() #0 { ret void } + define void @stack_fold_or8rm_or8rr_test() #0 { ret void } + define void @stack_fold_rcpssm_int_rcpssr_int_test() #1 { ret void } + define void @stack_fold_rsqrtssm_int_rsqrtssr_int_test() #1 { ret void } + define void @stack_fold_sbb16rm_sbb16rr_test() #0 { ret void } + define void @stack_fold_sbb32rm_sbb32rr_test() #0 { ret void } + define void @stack_fold_sbb64rm_sbb64rr_test() #0 { ret void } + define void @stack_fold_sbb8rm_sbb8rr_test() #0 { ret void } + define void @stack_fold_sqrtsdm_int_sqrtsdr_int_test() #1 { ret void } + define void @stack_fold_sqrtssm_int_sqrtssr_int_test() #1 { ret void } + define void @stack_fold_sub16rm_sub16rr_test() #0 { ret void } + define void @stack_fold_sub32rm_sub32rr_test() #0 { ret void } + define void @stack_fold_sub64rm_sub64rr_test() #0 { ret void } + define void @stack_fold_sub8rm_sub8rr_test() #0 { ret void } + define void @stack_fold_vrcpssm_vrcpssr_test() #0 { ret void } + define void @stack_fold_vrcpssm_int_vrcpssr_int_test() #0 { ret void } + define void @stack_fold_vrsqrtssm_vrsqrtssr_test() #0 { ret void } + define void @stack_fold_vrsqrtssm_int_vrsqrtssr_int_test() #0 { ret void } + define void @stack_fold_xor16rm_xor16rr_test() #0 { ret void } + define void @stack_fold_xor32rm_xor32rr_test() #0 { ret void } + define void @stack_fold_xor64rm_xor64rr_test() #0 { ret void } + define void @stack_fold_xor8rm_xor8rr_test() #0 { ret void } + define void @stack_fold_add16rm_add16rr_db_test() #0 { ret void } + define void @stack_fold_add32rm_add32rr_db_test() #0 { ret void } + define void @stack_fold_add64rm_add64rr_db_test() #0 { ret void } +... +--- +name: stack_fold_adc16mi_adc16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_adc16mi_adc16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC16mi + %0 = ADC16ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adc16mi8_adc16ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_adc16mi8_adc16ri8_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC16mi8 + %0 = ADC16ri8 %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adc16mr_adc16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_adc16mr_adc16rr_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC16mr + %0 = ADC16rr %0, %cx, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adc32mi_adc32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_adc32mi_adc32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC32mi + %0 = ADC32ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adc32mi8_adc32ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_adc32mi8_adc32ri8_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC32mi8 + %0 = ADC32ri8 %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adc32mr_adc32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_adc32mr_adc32rr_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC32mr + %0 = ADC32rr %0, %ecx, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adc64mi32_adc64ri32_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_adc64mi32_adc64ri32_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC64mi32 + %0 = ADC64ri32 %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adc64mi8_adc64ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_adc64mi8_adc64ri8_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC64mi8 + %0 = ADC64ri8 %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adc64mr_adc64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_adc64mr_adc64rr_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC64mr + %0 = ADC64rr %0, %rcx, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adc8mi_adc8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_adc8mi_adc8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC8mi + %0 = ADC8ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adc8mi8_adc8ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_adc8mi8_adc8ri8_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC8mi8 + %0 = ADC8ri8 %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_adc8mr_adc8rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %cl, %eflags + + ; CHECK-LABEL: name: stack_fold_adc8mr_adc8rr_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC8mr + %0 = ADC8rr %0, %cl, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add16mi_add16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add16mi_add16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD16mi + %0 = ADD16ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add16mi8_add16ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add16mi8_add16ri8_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD16mi8 + %0 = ADD16ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add16mr_add16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_add16mr_add16rr_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD16mr + %0 = ADD16rr %0, %cx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add32mi_add32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add32mi_add32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD32mi + %0 = ADD32ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add32mi8_add32ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add32mi8_add32ri8_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD32mi8 + %0 = ADD32ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add32mr_add32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_add32mr_add32rr_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD32mr + %0 = ADD32rr %0, %ecx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add64mi32_add64ri32_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add64mi32_add64ri32_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD64mi32 + %0 = ADD64ri32 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add64mi8_add64ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add64mi8_add64ri8_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD64mi8 + %0 = ADD64ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add64mr_add64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_add64mr_add64rr_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD64mr + %0 = ADD64rr %0, %rcx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add8mi_add8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add8mi_add8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD8mi + %0 = ADD8ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add8mi8_add8ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add8mi8_add8ri8_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD8mi8 + %0 = ADD8ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add8mr_add8rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_add8mr_add8rr_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD8mr + %0 = ADD8rr %0, %cl, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and16mi_and16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_and16mi_and16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND16mi + %0 = AND16ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and16mi8_and16ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_and16mi8_and16ri8_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND16mi8 + %0 = AND16ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and16mr_and16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_and16mr_and16rr_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND16mr + %0 = AND16rr %0, %cx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and32mi_and32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_and32mi_and32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND32mi + %0 = AND32ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and32mi8_and32ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_and32mi8_and32ri8_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND32mi8 + %0 = AND32ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and32mr_and32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_and32mr_and32rr_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND32mr + %0 = AND32rr %0, %ecx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and64mi32_and64ri32_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_and64mi32_and64ri32_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND64mi32 + %0 = AND64ri32 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and64mi8_and64ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_and64mi8_and64ri8_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND64mi8 + %0 = AND64ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and64mr_and64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_and64mr_and64rr_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND64mr + %0 = AND64rr %0, %rcx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and8mi_and8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_and8mi_and8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND8mi + %0 = AND8ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and8mi8_and8ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_and8mi8_and8ri8_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND8mi8 + %0 = AND8ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_and8mr_and8rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_and8mr_and8rr_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND8mr + %0 = AND8rr %0, %cl, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_dec16m_dec16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_dec16m_dec16r_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: DEC16m + %0 = DEC16r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_dec32m_dec32r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_dec32m_dec32r_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: DEC32m + %0 = DEC32r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_dec64m_dec64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_dec64m_dec64r_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: DEC64m + %0 = DEC64r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_dec8m_dec8r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_dec8m_dec8r_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: DEC8m + %0 = DEC8r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_inc16m_inc16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_inc16m_inc16r_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: INC16m + %0 = INC16r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_inc32m_inc32r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_inc32m_inc32r_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: INC32m + %0 = INC32r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_inc64m_inc64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_inc64m_inc64r_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: INC64m + %0 = INC64r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_inc8m_inc8r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_inc8m_inc8r_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: INC8m + %0 = INC8r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_neg16m_neg16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_neg16m_neg16r_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: NEG16m + %0 = NEG16r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_neg32m_neg32r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_neg32m_neg32r_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: NEG32m + %0 = NEG32r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_neg64m_neg64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_neg64m_neg64r_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: NEG64m + %0 = NEG64r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_neg8m_neg8r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_neg8m_neg8r_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: NEG8m + %0 = NEG8r %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_not16m_not16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_not16m_not16r_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: NOT16m + %0 = NOT16r %0 + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_not32m_not32r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_not32m_not32r_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: NOT32m + %0 = NOT32r %0 + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_not64m_not64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_not64m_not64r_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: NOT64m + %0 = NOT64r %0 + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_not8m_not8r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_not8m_not8r_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: NOT8m + %0 = NOT8r %0 + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or16mi_or16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_or16mi_or16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR16mi + %0 = OR16ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or16mi8_or16ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_or16mi8_or16ri8_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR16mi8 + %0 = OR16ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or16mr_or16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_or16mr_or16rr_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR16mr + %0 = OR16rr %0, %cx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or32mi_or32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_or32mi_or32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR32mi + %0 = OR32ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or32mi8_or32ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_or32mi8_or32ri8_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR32mi8 + %0 = OR32ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or32mr_or32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_or32mr_or32rr_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR32mr + %0 = OR32rr %0, %ecx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or64mi32_or64ri32_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_or64mi32_or64ri32_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR64mi32 + %0 = OR64ri32 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or64mi8_or64ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_or64mi8_or64ri8_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR64mi8 + %0 = OR64ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or64mr_or64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_or64mr_or64rr_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR64mr + %0 = OR64rr %0, %rcx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or8mi_or8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_or8mi_or8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR8mi + %0 = OR8ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or8mi8_or8ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_or8mi8_or8ri8_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR8mi8 + %0 = OR8ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_or8mr_or8rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_or8mr_or8rr_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR8mr + %0 = OR8rr %0, %cl, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl16m1_rcl16r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl16m1_rcl16r1_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL16m1 + %0 = RCL16r1 %0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl16mcl_rcl16rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl16mcl_rcl16rcl_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL16mCL + %0 = RCL16rCL %0, implicit-def %eflags, implicit undef %cl, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl16mi_rcl16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl16mi_rcl16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL16mi + %0 = RCL16ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl32m1_rcl32r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl32m1_rcl32r1_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL32m1 + %0 = RCL32r1 %0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl32mcl_rcl32rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl32mcl_rcl32rcl_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL32mCL + %0 = RCL32rCL %0, implicit-def %eflags, implicit undef %cl, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl32mi_rcl32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl32mi_rcl32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL32mi + %0 = RCL32ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl64m1_rcl64r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl64m1_rcl64r1_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL64m1 + %0 = RCL64r1 %0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl64mcl_rcl64rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl64mcl_rcl64rcl_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL64mCL + %0 = RCL64rCL %0, implicit-def %eflags, implicit undef %cl, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl64mi_rcl64ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl64mi_rcl64ri_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL64mi + %0 = RCL64ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl8m1_rcl8r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl8m1_rcl8r1_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL8m1 + %0 = RCL8r1 %0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl8mcl_rcl8rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl8mcl_rcl8rcl_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL8mCL + %0 = RCL8rCL %0, implicit-def %eflags, implicit undef %cl, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcl8mi_rcl8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcl8mi_rcl8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCL8mi + %0 = RCL8ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr16m1_rcr16r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr16m1_rcr16r1_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR16m1 + %0 = RCR16r1 %0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr16mcl_rcr16rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr16mcl_rcr16rcl_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR16mCL + %0 = RCR16rCL %0, implicit-def %eflags, implicit undef %cl, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr16mi_rcr16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr16mi_rcr16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR16mi + %0 = RCR16ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr32m1_rcr32r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr32m1_rcr32r1_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR32m1 + %0 = RCR32r1 %0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr32mcl_rcr32rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr32mcl_rcr32rcl_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR32mCL + %0 = RCR32rCL %0, implicit-def %eflags, implicit undef %cl, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr32mi_rcr32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr32mi_rcr32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR32mi + %0 = RCR32ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr64m1_rcr64r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr64m1_rcr64r1_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR64m1 + %0 = RCR64r1 %0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr64mcl_rcr64rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr64mcl_rcr64rcl_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR64mCL + %0 = RCR64rCL %0, implicit-def %eflags, implicit undef %cl, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr64mi_rcr64ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr64mi_rcr64ri_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR64mi + %0 = RCR64ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr8m1_rcr8r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr8m1_rcr8r1_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR8m1 + %0 = RCR8r1 %0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr8mcl_rcr8rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr8mcl_rcr8rcl_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR8mCL + %0 = RCR8rCL %0, implicit-def %eflags, implicit undef %cl, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rcr8mi_rcr8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_rcr8mi_rcr8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: RCR8mi + %0 = RCR8ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol16m1_rol16r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol16m1_rol16r1_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL16m1 + %0 = ROL16r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol16mcl_rol16rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol16mcl_rol16rcl_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL16mCL + %0 = ROL16rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol16mi_rol16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol16mi_rol16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL16mi + %0 = ROL16ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol32m1_rol32r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol32m1_rol32r1_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL32m1 + %0 = ROL32r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol32mcl_rol32rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol32mcl_rol32rcl_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL32mCL + %0 = ROL32rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol32mi_rol32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol32mi_rol32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL32mi + %0 = ROL32ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol64m1_rol64r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol64m1_rol64r1_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL64m1 + %0 = ROL64r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol64mcl_rol64rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol64mcl_rol64rcl_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL64mCL + %0 = ROL64rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol64mi_rol64ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol64mi_rol64ri_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL64mi + %0 = ROL64ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol8m1_rol8r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol8m1_rol8r1_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL8m1 + %0 = ROL8r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol8mcl_rol8rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol8mcl_rol8rcl_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL8mCL + %0 = ROL8rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_rol8mi_rol8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_rol8mi_rol8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROL8mi + %0 = ROL8ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror16m1_ror16r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror16m1_ror16r1_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR16m1 + %0 = ROR16r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror16mcl_ror16rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror16mcl_ror16rcl_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR16mCL + %0 = ROR16rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror16mi_ror16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror16mi_ror16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR16mi + %0 = ROR16ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror32m1_ror32r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror32m1_ror32r1_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR32m1 + %0 = ROR32r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror32mcl_ror32rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror32mcl_ror32rcl_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR32mCL + %0 = ROR32rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror32mi_ror32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror32mi_ror32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR32mi + %0 = ROR32ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror64m1_ror64r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror64m1_ror64r1_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR64m1 + %0 = ROR64r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror64mcl_ror64rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror64mcl_ror64rcl_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR64mCL + %0 = ROR64rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror64mi_ror64ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror64mi_ror64ri_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR64mi + %0 = ROR64ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror8m1_ror8r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror8m1_ror8r1_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR8m1 + %0 = ROR8r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror8mcl_ror8rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror8mcl_ror8rcl_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR8mCL + %0 = ROR8rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_ror8mi_ror8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_ror8mi_ror8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ROR8mi + %0 = ROR8ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar16m1_sar16r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar16m1_sar16r1_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR16m1 + %0 = SAR16r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar16mcl_sar16rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar16mcl_sar16rcl_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR16mCL + %0 = SAR16rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar16mi_sar16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar16mi_sar16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR16mi + %0 = SAR16ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar32m1_sar32r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar32m1_sar32r1_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR32m1 + %0 = SAR32r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar32mcl_sar32rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar32mcl_sar32rcl_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR32mCL + %0 = SAR32rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar32mi_sar32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar32mi_sar32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR32mi + %0 = SAR32ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar64m1_sar64r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar64m1_sar64r1_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR64m1 + %0 = SAR64r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar64mcl_sar64rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar64mcl_sar64rcl_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR64mCL + %0 = SAR64rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar64mi_sar64ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar64mi_sar64ri_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR64mi + %0 = SAR64ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar8m1_sar8r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar8m1_sar8r1_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR8m1 + %0 = SAR8r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar8mcl_sar8rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar8mcl_sar8rcl_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR8mCL + %0 = SAR8rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sar8mi_sar8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sar8mi_sar8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SAR8mi + %0 = SAR8ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb16mi_sbb16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_sbb16mi_sbb16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB16mi + %0 = SBB16ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb16mi8_sbb16ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_sbb16mi8_sbb16ri8_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB16mi8 + %0 = SBB16ri8 %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb16mr_sbb16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_sbb16mr_sbb16rr_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB16mr + %0 = SBB16rr %0, %cx, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb32mi_sbb32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_sbb32mi_sbb32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB32mi + %0 = SBB32ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb32mi8_sbb32ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_sbb32mi8_sbb32ri8_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB32mi8 + %0 = SBB32ri8 %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb32mr_sbb32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_sbb32mr_sbb32rr_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB32mr + %0 = SBB32rr %0, %ecx, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb64mi32_sbb64ri32_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_sbb64mi32_sbb64ri32_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB64mi32 + %0 = SBB64ri32 %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb64mi8_sbb64ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_sbb64mi8_sbb64ri8_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB64mi8 + %0 = SBB64ri8 %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb64mr_sbb64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_sbb64mr_sbb64rr_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB64mr + %0 = SBB64rr %0, %rcx, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb8mi_sbb8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_sbb8mi_sbb8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB8mi + %0 = SBB8ri %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb8mi8_sbb8ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_sbb8mi8_sbb8ri8_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB8mi8 + %0 = SBB8ri8 %0, 0, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sbb8mr_sbb8rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %cl, %eflags + + ; CHECK-LABEL: name: stack_fold_sbb8mr_sbb8rr_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB8mr + %0 = SBB8rr %0, %cl, implicit-def %eflags, implicit %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl16m1_shl16r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl16m1_shl16r1_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL16m1 + %0 = SHL16r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl16mcl_shl16rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl16mcl_shl16rcl_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL16mCL + %0 = SHL16rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl16mi_shl16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl16mi_shl16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL16mi + %0 = SHL16ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl32m1_shl32r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl32m1_shl32r1_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL32m1 + %0 = SHL32r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl32mcl_shl32rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl32mcl_shl32rcl_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL32mCL + %0 = SHL32rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl32mi_shl32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl32mi_shl32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL32mi + %0 = SHL32ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl64m1_shl64r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl64m1_shl64r1_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL64m1 + %0 = SHL64r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl64mcl_shl64rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl64mcl_shl64rcl_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL64mCL + %0 = SHL64rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl64mi_shl64ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl64mi_shl64ri_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL64mi + %0 = SHL64ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl8m1_shl8r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl8m1_shl8r1_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL8m1 + %0 = SHL8r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl8mcl_shl8rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl8mcl_shl8rcl_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL8mCL + %0 = SHL8rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shl8mi_shl8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shl8mi_shl8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHL8mi + %0 = SHL8ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shld16mrcl_shld16rrcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_shld16mrcl_shld16rrcl_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHLD16mrCL + %0 = SHLD16rrCL %0, %cx, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shld16mri8_shld16rri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_shld16mri8_shld16rri8_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHLD16mri8 + %0 = SHLD16rri8 %0, %cx, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shld32mrcl_shld32rrcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_shld32mrcl_shld32rrcl_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHLD32mrCL + %0 = SHLD32rrCL %0, %ecx, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shld32mri8_shld32rri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_shld32mri8_shld32rri8_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHLD32mri8 + %0 = SHLD32rri8 %0, %ecx, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shld64mrcl_shld64rrcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_shld64mrcl_shld64rrcl_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHLD64mrCL + %0 = SHLD64rrCL %0, %rcx, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shld64mri8_shld64rri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_shld64mri8_shld64rri8_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHLD64mri8 + %0 = SHLD64rri8 %0, %rcx, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr16m1_shr16r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr16m1_shr16r1_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR16m1 + %0 = SHR16r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr16mcl_shr16rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr16mcl_shr16rcl_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR16mCL + %0 = SHR16rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr16mi_shr16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr16mi_shr16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR16mi + %0 = SHR16ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr32m1_shr32r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr32m1_shr32r1_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR32m1 + %0 = SHR32r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr32mcl_shr32rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr32mcl_shr32rcl_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR32mCL + %0 = SHR32rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr32mi_shr32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr32mi_shr32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR32mi + %0 = SHR32ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr64m1_shr64r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr64m1_shr64r1_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR64m1 + %0 = SHR64r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr64mcl_shr64rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr64mcl_shr64rcl_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR64mCL + %0 = SHR64rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr64mi_shr64ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr64mi_shr64ri_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR64mi + %0 = SHR64ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr8m1_shr8r1_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr8m1_shr8r1_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR8m1 + %0 = SHR8r1 %0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr8mcl_shr8rcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr8mcl_shr8rcl_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR8mCL + %0 = SHR8rCL %0, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shr8mi_shr8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_shr8mi_shr8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHR8mi + %0 = SHR8ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shrd16mrcl_shrd16rrcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_shrd16mrcl_shrd16rrcl_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHRD16mrCL + %0 = SHRD16rrCL %0, %cx, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shrd16mri8_shrd16rri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_shrd16mri8_shrd16rri8_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHRD16mri8 + %0 = SHRD16rri8 %0, %cx, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shrd32mrcl_shrd32rrcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_shrd32mrcl_shrd32rrcl_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHRD32mrCL + %0 = SHRD32rrCL %0, %ecx, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shrd32mri8_shrd32rri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_shrd32mri8_shrd32rri8_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHRD32mri8 + %0 = SHRD32rri8 %0, %ecx, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shrd64mrcl_shrd64rrcl_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_shrd64mrcl_shrd64rrcl_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHRD64mrCL + %0 = SHRD64rrCL %0, %rcx, implicit-def %eflags, implicit undef %cl + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_shrd64mri8_shrd64rri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_shrd64mri8_shrd64rri8_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SHRD64mri8 + %0 = SHRD64rri8 %0, %rcx, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub16mi_sub16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sub16mi_sub16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB16mi + %0 = SUB16ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub16mi8_sub16ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sub16mi8_sub16ri8_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB16mi8 + %0 = SUB16ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub16mr_sub16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_sub16mr_sub16rr_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB16mr + %0 = SUB16rr %0, %cx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub32mi_sub32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sub32mi_sub32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB32mi + %0 = SUB32ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub32mi8_sub32ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sub32mi8_sub32ri8_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB32mi8 + %0 = SUB32ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub32mr_sub32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_sub32mr_sub32rr_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB32mr + %0 = SUB32rr %0, %ecx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub64mi32_sub64ri32_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sub64mi32_sub64ri32_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB64mi32 + %0 = SUB64ri32 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub64mi8_sub64ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sub64mi8_sub64ri8_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB64mi8 + %0 = SUB64ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub64mr_sub64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_sub64mr_sub64rr_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB64mr + %0 = SUB64rr %0, %rcx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub8mi_sub8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sub8mi_sub8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB8mi + %0 = SUB8ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub8mi8_sub8ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sub8mi8_sub8ri8_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB8mi8 + %0 = SUB8ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sub8mr_sub8rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_sub8mr_sub8rr_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB8mr + %0 = SUB8rr %0, %cl, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor16mi_xor16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xor16mi_xor16ri_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR16mi + %0 = XOR16ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor16mi8_xor16ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xor16mi8_xor16ri8_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR16mi8 + %0 = XOR16ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor16mr_xor16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_xor16mr_xor16rr_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR16mr + %0 = XOR16rr %0, %cx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor32mi_xor32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xor32mi_xor32ri_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR32mi + %0 = XOR32ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor32mi8_xor32ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xor32mi8_xor32ri8_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR32mi8 + %0 = XOR32ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor32mr_xor32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_xor32mr_xor32rr_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR32mr + %0 = XOR32rr %0, %ecx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor64mi32_xor64ri32_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xor64mi32_xor64ri32_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR64mi32 + %0 = XOR64ri32 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor64mi8_xor64ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xor64mi8_xor64ri8_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR64mi8 + %0 = XOR64ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor64mr_xor64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_xor64mr_xor64rr_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR64mr + %0 = XOR64rr %0, %rcx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor8mi_xor8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xor8mi_xor8ri_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR8mi + %0 = XOR8ri %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor8mi8_xor8ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xor8mi8_xor8ri8_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR8mi8 + %0 = XOR8ri8 %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xor8mr_xor8rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_xor8mr_xor8rr_test + %0 = MOV8rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR8mr + %0 = XOR8rr %0, %cl, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add16mi_add16ri_db_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add16mi_add16ri_db_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD16mi + %0 = ADD16ri_DB %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add16mi8_add16ri8_db_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add16mi8_add16ri8_db_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD16mi8 + %0 = ADD16ri8_DB %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add16mr_add16rr_db_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_add16mr_add16rr_db_test + %0 = MOV16rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD16mr + %0 = ADD16rr_DB %0, %cx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add32mi_add32ri_db_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add32mi_add32ri_db_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD32mi + %0 = ADD32ri_DB %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add32mi8_add32ri8_db_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add32mi8_add32ri8_db_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD32mi8 + %0 = ADD32ri8_DB %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add32mr_add32rr_db_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_add32mr_add32rr_db_test + %0 = MOV32rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD32mr + %0 = ADD32rr_DB %0, %ecx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add64mi32_add64ri32_db_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add64mi32_add64ri32_db_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD64mi32 + %0 = ADD64ri32_DB %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add64mi8_add64ri8_db_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_add64mi8_add64ri8_db_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD64mi8 + %0 = ADD64ri8_DB %0, 0, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rcx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_add64mr_add64rr_db_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_add64mr_add64rr_db_test + %0 = MOV64rm %stack.0, 1, _, 0, _ + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD64mr + %0 = ADD64rr_DB %0, %rcx, implicit-def %eflags + INLINEASM $nop, 1, 12, implicit %rax, 12, implicit %rbx, 12, implicit %rdx, 12, implicit %rbp, 12, implicit %rsp, 12, implicit %rsi, 12, implicit %rdi, 12, implicit %r8, 12, implicit %r9, 12, implicit %r10, 12, implicit %r11, 12, implicit %r12, 12, implicit %r13, 12, implicit %r14, 12, implicit %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_arpl16mr_arpl16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_arpl16mr_arpl16rr_test + ; CHECK: ARPL16mr + %0 = ARPL16rr undef %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_call16m_call16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_call16m_call16r_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CALL16m + CALL16r %0, implicit undef %esp + RET 0 +... +--- +name: stack_fold_call32m_call32r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_call32m_call32r_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CALL32m + CALL32r %0, implicit undef %esp + RET 0 +... +--- +name: stack_fold_call64m_call64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_call64m_call64r_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CALL64m + CALL64r %0, implicit undef %rsp + RET 0 +... +--- +name: stack_fold_cmp16mi_cmp16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_cmp16mi_cmp16ri_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP16mi + CMP16ri %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp16mi8_cmp16ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_cmp16mi8_cmp16ri8_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP16mi8 + CMP16ri8 %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp16mr_cmp16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_cmp16mr_cmp16rr_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP16mr + CMP16rr %0, undef %bx, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp32mi_cmp32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_cmp32mi_cmp32ri_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP32mi + CMP32ri %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp32mi8_cmp32ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_cmp32mi8_cmp32ri8_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP32mi8 + CMP32ri8 %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp32mr_cmp32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_cmp32mr_cmp32rr_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP32mr + CMP32rr %0, undef %ebx, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp64mi32_cmp64ri32_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_cmp64mi32_cmp64ri32_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP64mi32 + CMP64ri32 %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp64mi8_cmp64ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_cmp64mi8_cmp64ri8_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP64mi8 + CMP64ri8 %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp64mr_cmp64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_cmp64mr_cmp64rr_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP64mr + CMP64rr %0, undef %rbx, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp8mi_cmp8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: + - { reg: '%al', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %al + + ; CHECK-LABEL: name: stack_fold_cmp8mi_cmp8ri_test + %0 = COPY %al + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP8mi + CMP8ri %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp8mi8_cmp8ri8_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: + - { reg: '%al', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %al + + ; CHECK-LABEL: name: stack_fold_cmp8mi8_cmp8ri8_test + %0 = COPY %al + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP8mi8 + CMP8ri8 %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp8mr_cmp8rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: + - { reg: '%al', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %al + + ; CHECK-LABEL: name: stack_fold_cmp8mr_cmp8rr_test + %0 = COPY %al + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP8mr + CMP8rr %0, undef %bl, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmpxchg16rm_cmpxchg16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_cmpxchg16rm_cmpxchg16rr_test + ; CHECK: CMPXCHG16rm + %0 = CMPXCHG16rr undef %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_cmpxchg32rm_cmpxchg32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_cmpxchg32rm_cmpxchg32rr_test + ; CHECK: CMPXCHG32rm + %0 = CMPXCHG32rr undef %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_cmpxchg64rm_cmpxchg64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_cmpxchg64rm_cmpxchg64rr_test + ; CHECK: CMPXCHG64rm + %0 = CMPXCHG64rr undef %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_cmpxchg8rm_cmpxchg8rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_cmpxchg8rm_cmpxchg8rr_test + ; CHECK: CMPXCHG8rm + %0 = CMPXCHG8rr undef %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_div16m_div16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_div16m_div16r_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: DIV16m + DIV16r %0, implicit-def %ax, implicit-def %dx, implicit-def %eflags, implicit undef %ax, implicit undef %dx + RET 0 +... +--- +name: stack_fold_div32m_div32r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_div32m_div32r_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: DIV32m + DIV32r %0, implicit-def %eax, implicit-def %edx, implicit-def %eflags, implicit undef %eax, implicit undef %edx + RET 0 +... +--- +name: stack_fold_div64m_div64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_div64m_div64r_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: DIV64m + DIV64r %0, implicit-def %rax, implicit-def %rdx, implicit-def %eflags, implicit undef %rax, implicit undef %rdx + RET 0 +... +--- +name: stack_fold_div8m_div8r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: + - { reg: '%al', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %al + + ; CHECK-LABEL: name: stack_fold_div8m_div8r_test + %0 = COPY %al + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: DIV8m + DIV8r %0, implicit-def %al, implicit-def %ah, implicit-def %eflags, implicit undef %ax + RET 0 +... +--- +name: stack_fold_idiv16m_idiv16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_idiv16m_idiv16r_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IDIV16m + IDIV16r %0, implicit-def %ax, implicit-def %dx, implicit-def %eflags, implicit undef %ax, implicit undef %dx + RET 0 +... +--- +name: stack_fold_idiv32m_idiv32r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_idiv32m_idiv32r_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IDIV32m + IDIV32r %0, implicit-def %eax, implicit-def %edx, implicit-def %eflags, implicit undef %eax, implicit undef %edx + RET 0 +... +--- +name: stack_fold_idiv64m_idiv64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_idiv64m_idiv64r_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IDIV64m + IDIV64r %0, implicit-def %rax, implicit-def %rdx, implicit-def %eflags, implicit undef %rax, implicit undef %rdx + RET 0 +... +--- +name: stack_fold_idiv8m_idiv8r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: + - { reg: '%al', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %al + + ; CHECK-LABEL: name: stack_fold_idiv8m_idiv8r_test + %0 = COPY %al + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IDIV8m + IDIV8r %0, implicit-def %al, implicit-def %ah, implicit-def %eflags, implicit undef %ax + RET 0 +... +--- +name: stack_fold_imul16m_imul16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_imul16m_imul16r_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL16m + IMUL16r %0, implicit-def %ax, implicit-def %dx, implicit-def %eflags, implicit undef %ax + RET 0 +... +--- +name: stack_fold_imul32m_imul32r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_imul32m_imul32r_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL32m + IMUL32r %0, implicit-def %eax, implicit-def %edx, implicit-def %eflags, implicit undef %eax + RET 0 +... +--- +name: stack_fold_imul64m_imul64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_imul64m_imul64r_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL64m + IMUL64r %0, implicit-def %rax, implicit-def %rdx, implicit-def %eflags, implicit undef %rax + RET 0 +... +--- +name: stack_fold_imul8m_imul8r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: + - { reg: '%al', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %al + + ; CHECK-LABEL: name: stack_fold_imul8m_imul8r_test + %0 = COPY %al + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL8m + IMUL8r %0, implicit-def %al, implicit-def %eflags, implicit-def %ax, implicit undef %al + RET 0 +... +--- +name: stack_fold_jmp16m_jmp16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_jmp16m_jmp16r_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: JMP16m + JMP16r %0 + RET 0 +... +--- +name: stack_fold_jmp32m_jmp32r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_jmp32m_jmp32r_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: JMP32m + JMP32r %0 + RET 0 +... +--- +name: stack_fold_jmp64m_jmp64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_jmp64m_jmp64r_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: JMP64m + JMP64r %0 + RET 0 +... +--- +name: stack_fold_lldt16m_lldt16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_lldt16m_lldt16r_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LLDT16m + LLDT16r %0 + RET 0 +... +--- +name: stack_fold_lmsw16m_lmsw16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_lmsw16m_lmsw16r_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LMSW16m + LMSW16r %0 + RET 0 +... +--- +name: stack_fold_ltrm_ltrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_ltrm_ltrr_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LTRm + LTRr %0 + RET 0 +... +--- +name: stack_fold_mov16mr_mov16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_mov16mr_mov16rr_test + ; CHECK: MOV16mr + %0 = MOV16rr undef %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_mov16ms_mov16rs_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_mov16ms_mov16rs_test + ; CHECK: MOV16ms + %0 = MOV16rs undef %cs + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_mov32mr_mov32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_mov32mr_mov32rr_test + ; CHECK: MOV32mr + %0 = MOV32rr undef %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_mov32ms_mov32rs_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_mov32ms_mov32rs_test + ; CHECK: MOV32ms + %0 = MOV32rs undef %cs + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_mov64mr_mov64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_mov64mr_mov64rr_test + ; CHECK: MOV64mr + %0 = MOV64rr undef %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_mov64ms_mov64rs_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_mov64ms_mov64rs_test + ; CHECK: MOV64ms + %0 = MOV64rs undef %cs + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_mov8mr_mov8rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_mov8mr_mov8rr_test + ; CHECK: MOV8mr + %0 = MOV8rr undef %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_mov8mr_norex_mov8rr_norex_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8_norex } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_mov8mr_norex_mov8rr_norex_test + ; CHECK: MOV8mr_NOREX + %0 = MOV8rr_NOREX undef %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_mul16m_mul16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_mul16m_mul16r_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MUL16m + MUL16r %0, implicit-def %ax, implicit-def %dx, implicit-def %eflags, implicit undef %ax + RET 0 +... +--- +name: stack_fold_mul32m_mul32r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_mul32m_mul32r_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MUL32m + MUL32r %0, implicit-def %eax, implicit-def %edx, implicit-def %eflags, implicit undef %eax + RET 0 +... +--- +name: stack_fold_mul64m_mul64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_mul64m_mul64r_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MUL64m + MUL64r %0, implicit-def %rax, implicit-def %rdx, implicit-def %eflags, implicit undef %rax + RET 0 +... +--- +name: stack_fold_mul8m_mul8r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: + - { reg: '%al', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %al + + ; CHECK-LABEL: name: stack_fold_mul8m_mul8r_test + %0 = COPY %al + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MUL8m + MUL8r %0, implicit-def %al, implicit-def %eflags, implicit-def %ax, implicit undef %al + RET 0 +... +--- +name: stack_fold_pop16rmm_pop16rmr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_pop16rmm_pop16rmr_test + ; CHECK: POP16rmm + %0 = POP16rmr implicit-def %esp, implicit undef %esp + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_pop32rmm_pop32rmr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_pop32rmm_pop32rmr_test + ; CHECK: POP32rmm + %0 = POP32rmr implicit-def %esp, implicit undef %esp + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_pop64rmm_pop64rmr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_pop64rmm_pop64rmr_test + ; CHECK: POP64rmm + %0 = POP64rmr implicit-def %rsp, implicit undef %rsp + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_push16rmm_push16rmr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_push16rmm_push16rmr_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PUSH16rmm + PUSH16rmr %0, implicit-def %esp, implicit undef %esp + RET 0 +... +--- +name: stack_fold_push32rmm_push32rmr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_push32rmm_push32rmr_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PUSH32rmm + PUSH32rmr %0, implicit-def %esp, implicit undef %esp + RET 0 +... +--- +name: stack_fold_push64rmm_push64rmr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_push64rmm_push64rmr_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PUSH64rmm + PUSH64rmr %0, implicit-def %rsp, implicit undef %rsp + RET 0 +... +--- +name: stack_fold_setaem_setaer_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setaem_setaer_test + ; CHECK: SETAEm + %0 = SETAEr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setam_setar_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setam_setar_test + ; CHECK: SETAm + %0 = SETAr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setbem_setber_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setbem_setber_test + ; CHECK: SETBEm + %0 = SETBEr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setbm_setbr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setbm_setbr_test + ; CHECK: SETBm + %0 = SETBr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setem_seter_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setem_seter_test + ; CHECK: SETEm + %0 = SETEr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setgem_setger_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setgem_setger_test + ; CHECK: SETGEm + %0 = SETGEr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setgm_setgr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setgm_setgr_test + ; CHECK: SETGm + %0 = SETGr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setlem_setler_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setlem_setler_test + ; CHECK: SETLEm + %0 = SETLEr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setlm_setlr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setlm_setlr_test + ; CHECK: SETLm + %0 = SETLr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setnem_setner_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setnem_setner_test + ; CHECK: SETNEm + %0 = SETNEr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setnom_setnor_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setnom_setnor_test + ; CHECK: SETNOm + %0 = SETNOr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setnpm_setnpr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setnpm_setnpr_test + ; CHECK: SETNPm + %0 = SETNPr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setnsm_setnsr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setnsm_setnsr_test + ; CHECK: SETNSm + %0 = SETNSr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setom_setor_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setom_setor_test + ; CHECK: SETOm + %0 = SETOr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setpm_setpr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setpm_setpr_test + ; CHECK: SETPm + %0 = SETPr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_setsm_setsr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: %eflags + + ; CHECK-LABEL: name: stack_fold_setsm_setsr_test + ; CHECK: SETSm + %0 = SETSr implicit %eflags + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_sldt64m_sldt64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_sldt64m_sldt64r_test + ; CHECK: SLDT64m + %0 = SLDT64r + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_tailjmpm_tailjmpr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64_tc } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_tailjmpm_tailjmpr_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TAILJMPm + TAILJMPr %0, implicit undef %esp + RET 0 +... +--- +name: stack_fold_tailjmpm64_tailjmpr64_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64_tc } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_tailjmpm64_tailjmpr64_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TAILJMPm64 + TAILJMPr64 %0, implicit undef %rsp + RET 0 +... +--- +name: stack_fold_tailjmpm64_rex_tailjmpr64_rex_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64_tc } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_tailjmpm64_rex_tailjmpr64_rex_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TAILJMPm64_REX + TAILJMPr64_REX %0, implicit undef %rsp + RET 0 +... +--- +name: stack_fold_test16mi_test16ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_test16mi_test16ri_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TEST16mi + TEST16ri %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_test32mi_test32ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_test32mi_test32ri_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TEST32mi + TEST32ri %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_test64mi32_test64ri32_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_test64mi32_test64ri32_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TEST64mi32 + TEST64ri32 %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_test8mi_test8ri_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: + - { reg: '%al', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %al + + ; CHECK-LABEL: name: stack_fold_test8mi_test8ri_test + %0 = COPY %al + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: TEST8mi + TEST8ri %0, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_verrm_verrr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_verrm_verrr_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VERRm + VERRr %0 + RET 0 +... +--- +name: stack_fold_verwm_verwr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_verwm_verwr_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VERWm + VERWr %0 + RET 0 +... +--- +name: stack_fold_vmread32mr_vmread32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmread32mr_vmread32rr_test + ; CHECK: VMREAD32mr + %0 = VMREAD32rr undef %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_vmread64mr_vmread64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_vmread64mr_vmread64rr_test + ; CHECK: VMREAD64mr + %0 = VMREAD64rr undef %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xadd16rm_xadd16rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 2, alignment: 2 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xadd16rm_xadd16rr_test + ; CHECK: XADD16rm + %0 = XADD16rr undef %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV16mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xadd32rm_xadd32rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 4, alignment: 4 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xadd32rm_xadd32rr_test + ; CHECK: XADD32rm + %0 = XADD32rr undef %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV32mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xadd64rm_xadd64rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 8, alignment: 8 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xadd64rm_xadd64rr_test + ; CHECK: XADD64rm + %0 = XADD64rr undef %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV64mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_xadd8rm_xadd8rr_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr8 } +liveins: +stack: + - { id: 0, type: spill-slot, offset: 0, size: 1, alignment: 1 } +body: | + bb.0 (%ir-block.0): + liveins: + + ; CHECK-LABEL: name: stack_fold_xadd8rm_xadd8rr_test + ; CHECK: XADD8rm + %0 = XADD8rr undef %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + MOV8mr %stack.0, 1, _, 0, _, %0 + RET 0 +... +--- +name: stack_fold_push16rmm_push16r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_push16rmm_push16r_test + %0 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PUSH16rmm + PUSH16r %0, implicit-def %esp, implicit undef %esp + RET 0 +... +--- +name: stack_fold_push32rmm_push32r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_push32rmm_push32r_test + %0 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PUSH32rmm + PUSH32r %0, implicit-def %esp, implicit undef %esp + RET 0 +... +--- +name: stack_fold_push64rmm_push64r_test +tracksRegLiveness: true +registers: + - { id: 0, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%0' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_push64rmm_push64r_test + %0 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: PUSH64rmm + PUSH64r %0, implicit-def %rsp, implicit undef %rsp + RET 0 +... +--- +name: stack_fold_bsf16rm_bsf16rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_bsf16rm_bsf16rr_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BSF16rm + %ax = BSF16rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_bsf32rm_bsf32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_bsf32rm_bsf32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BSF32rm + %eax = BSF32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_bsf64rm_bsf64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_bsf64rm_bsf64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BSF64rm + %rax = BSF64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_bsr16rm_bsr16rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_bsr16rm_bsr16rr_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BSR16rm + %ax = BSR16rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_bsr32rm_bsr32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_bsr32rm_bsr32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BSR32rm + %eax = BSR32rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_bsr64rm_bsr64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_bsr64rm_bsr64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: BSR64rm + %rax = BSR64rr %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp16rm_cmp16rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_cmp16rm_cmp16rr_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP16rm + CMP16rr undef %ax, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp32rm_cmp32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_cmp32rm_cmp32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP32rm + CMP32rr undef %eax, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp64rm_cmp64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_cmp64rm_cmp64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP64rm + CMP64rr undef %rax, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_cmp8rm_cmp8rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr8 } +liveins: + - { reg: '%bl', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bl + + ; CHECK-LABEL: name: stack_fold_cmp8rm_cmp8rr_test + %1 = COPY %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: CMP8rm + CMP8rr undef %al, %1, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_imul16rmi_imul16rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_imul16rmi_imul16rri_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL16rmi + %ax = IMUL16rri %1, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_imul16rmi8_imul16rri8_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_imul16rmi8_imul16rri8_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL16rmi8 + %ax = IMUL16rri8 %1, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_imul32rmi_imul32rri_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_imul32rmi_imul32rri_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL32rmi + %eax = IMUL32rri %1, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_imul32rmi8_imul32rri8_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_imul32rmi8_imul32rri8_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL32rmi8 + %eax = IMUL32rri8 %1, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_imul64rmi32_imul64rri32_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_imul64rmi32_imul64rri32_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL64rmi32 + %rax = IMUL64rri32 %1, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_imul64rmi8_imul64rri8_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_imul64rmi8_imul64rri8_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL64rmi8 + %rax = IMUL64rri8 %1, 0, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_lar16rm_lar16rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_lar16rm_lar16rr_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LAR16rm + %ax = LAR16rr %1 + RET 0 +... +--- +name: stack_fold_lar32rm_lar32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_lar32rm_lar32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LAR32rm + %eax = LAR32rr %1 + RET 0 +... +--- +name: stack_fold_lar64rm_lar64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_lar64rm_lar64rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LAR64rm + %rax = LAR64rr %1 + RET 0 +... +--- +name: stack_fold_lsl16rm_lsl16rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_lsl16rm_lsl16rr_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LSL16rm + %ax = LSL16rr %1 + RET 0 +... +--- +name: stack_fold_lsl32rm_lsl32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_lsl32rm_lsl32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LSL32rm + %eax = LSL32rr %1 + RET 0 +... +--- +name: stack_fold_lsl64rm_lsl64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_lsl64rm_lsl64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: LSL64rm + %rax = LSL64rr %1 + RET 0 +... +--- +name: stack_fold_mov16rm_mov16rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_mov16rm_mov16rr_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOV16rm + %ax = MOV16rr %1 + RET 0 +... +--- +name: stack_fold_mov16sm_mov16sr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%ax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ax + + ; CHECK-LABEL: name: stack_fold_mov16sm_mov16sr_test + %1 = COPY %ax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOV16sm + %cs = MOV16sr %1 + RET 0 +... +--- +name: stack_fold_mov32rm_mov32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_mov32rm_mov32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOV32rm + %eax = MOV32rr %1 + RET 0 +... +--- +name: stack_fold_mov32sm_mov32sr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%eax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %eax + + ; CHECK-LABEL: name: stack_fold_mov32sm_mov32sr_test + %1 = COPY %eax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOV32sm + %cs = MOV32sr %1 + RET 0 +... +--- +name: stack_fold_mov64rm_mov64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_mov64rm_mov64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOV64rm + %rax = MOV64rr %1 + RET 0 +... +--- +name: stack_fold_mov64sm_mov64sr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rax', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rax + + ; CHECK-LABEL: name: stack_fold_mov64sm_mov64sr_test + %1 = COPY %rax + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOV64sm + %cs = MOV64sr %1 + RET 0 +... +--- +name: stack_fold_mov8rm_mov8rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr8 } +liveins: + - { reg: '%bl', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bl + + ; CHECK-LABEL: name: stack_fold_mov8rm_mov8rr_test + %1 = COPY %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOV8rm + %al = MOV8rr %1 + RET 0 +... +--- +name: stack_fold_movsx16rm8_movsx16rr8_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr8 } +liveins: + - { reg: '%bl', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bl + + ; CHECK-LABEL: name: stack_fold_movsx16rm8_movsx16rr8_test + %1 = COPY %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVSX16rm8 + %ax = MOVSX16rr8 %1 + RET 0 +... +--- +name: stack_fold_movsx32_norexrm8_movsx32_norexrr8_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr8_norex } +liveins: + - { reg: '%bl', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bl + + ; CHECK-LABEL: name: stack_fold_movsx32_norexrm8_movsx32_norexrr8_test + %1 = COPY %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVSX32_NOREXrm8 + %eax = MOVSX32_NOREXrr8 %1 + RET 0 +... +--- +name: stack_fold_movsx32rm16_movsx32rr16_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_movsx32rm16_movsx32rr16_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVSX32rm16 + %eax = MOVSX32rr16 %1 + RET 0 +... +--- +name: stack_fold_movsx32rm8_movsx32rr8_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr8 } +liveins: + - { reg: '%bl', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bl + + ; CHECK-LABEL: name: stack_fold_movsx32rm8_movsx32rr8_test + %1 = COPY %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVSX32rm8 + %eax = MOVSX32rr8 %1 + RET 0 +... +--- +name: stack_fold_movsx64rm16_movsx64rr16_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_movsx64rm16_movsx64rr16_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVSX64rm16 + %rax = MOVSX64rr16 %1 + RET 0 +... +--- +name: stack_fold_movsx64rm32_movsx64rr32_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_movsx64rm32_movsx64rr32_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVSX64rm32 + %rax = MOVSX64rr32 %1 + RET 0 +... +--- +name: stack_fold_movsx64rm8_movsx64rr8_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr8 } +liveins: + - { reg: '%bl', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bl + + ; CHECK-LABEL: name: stack_fold_movsx64rm8_movsx64rr8_test + %1 = COPY %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVSX64rm8 + %rax = MOVSX64rr8 %1 + RET 0 +... +--- +name: stack_fold_movzx16rm8_movzx16rr8_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr8 } +liveins: + - { reg: '%bl', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bl + + ; CHECK-LABEL: name: stack_fold_movzx16rm8_movzx16rr8_test + %1 = COPY %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVZX16rm8 + %ax = MOVZX16rr8 %1 + RET 0 +... +--- +name: stack_fold_movzx32_norexrm8_movzx32_norexrr8_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr8_norex } +liveins: + - { reg: '%bl', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bl + + ; CHECK-LABEL: name: stack_fold_movzx32_norexrm8_movzx32_norexrr8_test + %1 = COPY %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVZX32_NOREXrm8 + %eax = MOVZX32_NOREXrr8 %1 + RET 0 +... +--- +name: stack_fold_movzx32rm16_movzx32rr16_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_movzx32rm16_movzx32rr16_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVZX32rm16 + %eax = MOVZX32rr16 %1 + RET 0 +... +--- +name: stack_fold_movzx32rm8_movzx32rr8_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr8 } +liveins: + - { reg: '%bl', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bl + + ; CHECK-LABEL: name: stack_fold_movzx32rm8_movzx32rr8_test + %1 = COPY %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVZX32rm8 + %eax = MOVZX32rr8 %1 + RET 0 +... +--- +name: stack_fold_movzx64rm16_movzx64rr16_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr16 } +liveins: + - { reg: '%bx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bx + + ; CHECK-LABEL: name: stack_fold_movzx64rm16_movzx64rr16_test + %1 = COPY %bx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVZX64rm16 + %rax = MOVZX64rr16 %1 + RET 0 +... +--- +name: stack_fold_movzx64rm8_movzx64rr8_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr8 } +liveins: + - { reg: '%bl', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %bl + + ; CHECK-LABEL: name: stack_fold_movzx64rm8_movzx64rr8_test + %1 = COPY %bl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: MOVZX64rm8 + %rax = MOVZX64rr8 %1 + RET 0 +... +--- +name: stack_fold_vmwrite32rm_vmwrite32rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr32 } +liveins: + - { reg: '%ebx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %ebx + + ; CHECK-LABEL: name: stack_fold_vmwrite32rm_vmwrite32rr_test + %1 = COPY %ebx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VMWRITE32rm + %eax = VMWRITE32rr %1 + RET 0 +... +--- +name: stack_fold_vmwrite64rm_vmwrite64rr_test +tracksRegLiveness: true +registers: + - { id: 1, class: gr64 } +liveins: + - { reg: '%rbx', virtual-reg: '%1' } +body: | + bb.0 (%ir-block.0): + liveins: %rbx + + ; CHECK-LABEL: name: stack_fold_vmwrite64rm_vmwrite64rr_test + %1 = COPY %rbx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: VMWRITE64rm + %rax = VMWRITE64rr %1 + RET 0 +... +--- +name: stack_fold_adc16rm_adc16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_adc16rm_adc16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC16rm + %ax = ADC16rr undef %bx, %2, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_adc32rm_adc32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_adc32rm_adc32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC32rm + %eax = ADC32rr undef %ebx, %2, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_adc64rm_adc64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_adc64rm_adc64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC64rm + %rax = ADC64rr undef %rbx, %2, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_adc8rm_adc8rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr8 } +liveins: + - { reg: '%cl', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cl, %eflags + + ; CHECK-LABEL: name: stack_fold_adc8rm_adc8rr_test + %2 = COPY %cl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADC8rm + %al = ADC8rr undef %bl, %2, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_add16rm_add16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_add16rm_add16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD16rm + %ax = ADD16rr undef %bx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_add32rm_add32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_add32rm_add32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD32rm + %eax = ADD32rr undef %ebx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_add64rm_add64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_add64rm_add64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD64rm + %rax = ADD64rr undef %rbx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_add8rm_add8rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr8 } +liveins: + - { reg: '%cl', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_add8rm_add8rr_test + %2 = COPY %cl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD8rm + %al = ADD8rr undef %bl, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_and16rm_and16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_and16rm_and16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND16rm + %ax = AND16rr undef %bx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_and32rm_and32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_and32rm_and32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND32rm + %eax = AND32rr undef %ebx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_and64rm_and64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_and64rm_and64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND64rm + %rax = AND64rr undef %rbx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_and8rm_and8rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr8 } +liveins: + - { reg: '%cl', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_and8rm_and8rr_test + %2 = COPY %cl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: AND8rm + %al = AND8rr undef %bl, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_imul16rm_imul16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_imul16rm_imul16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL16rm + %ax = IMUL16rr undef %bx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_imul32rm_imul32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_imul32rm_imul32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL32rm + %eax = IMUL32rr undef %ebx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_imul64rm_imul64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_imul64rm_imul64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: IMUL64rm + %rax = IMUL64rr undef %rbx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_or16rm_or16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_or16rm_or16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR16rm + %ax = OR16rr undef %bx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_or32rm_or32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_or32rm_or32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR32rm + %eax = OR32rr undef %ebx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_or64rm_or64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_or64rm_or64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR64rm + %rax = OR64rr undef %rbx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_or8rm_or8rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr8 } +liveins: + - { reg: '%cl', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_or8rm_or8rr_test + %2 = COPY %cl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: OR8rm + %al = OR8rr undef %bl, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_rcpssm_int_rcpssr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_rcpssm_int_rcpssr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: RCPSSm_Int + %xmm0 = RCPSSr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_rsqrtssm_int_rsqrtssr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_rsqrtssm_int_rsqrtssr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: RSQRTSSm_Int + %xmm0 = RSQRTSSr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_sbb16rm_sbb16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx, %eflags + + ; CHECK-LABEL: name: stack_fold_sbb16rm_sbb16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB16rm + %ax = SBB16rr undef %bx, %2, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_sbb32rm_sbb32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx, %eflags + + ; CHECK-LABEL: name: stack_fold_sbb32rm_sbb32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB32rm + %eax = SBB32rr undef %ebx, %2, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_sbb64rm_sbb64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx, %eflags + + ; CHECK-LABEL: name: stack_fold_sbb64rm_sbb64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB64rm + %rax = SBB64rr undef %rbx, %2, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_sbb8rm_sbb8rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr8 } +liveins: + - { reg: '%cl', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cl, %eflags + + ; CHECK-LABEL: name: stack_fold_sbb8rm_sbb8rr_test + %2 = COPY %cl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SBB8rm + %al = SBB8rr undef %bl, %2, implicit-def %eflags, implicit %eflags + RET 0 +... +--- +name: stack_fold_sqrtsdm_int_sqrtsdr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_sqrtsdm_int_sqrtsdr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SQRTSDm_Int + %xmm0 = SQRTSDr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_sqrtssm_int_sqrtssr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_sqrtssm_int_sqrtssr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: SQRTSSm_Int + %xmm0 = SQRTSSr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_sub16rm_sub16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_sub16rm_sub16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB16rm + %ax = SUB16rr undef %bx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_sub32rm_sub32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_sub32rm_sub32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB32rm + %eax = SUB32rr undef %ebx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_sub64rm_sub64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_sub64rm_sub64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB64rm + %rax = SUB64rr undef %rbx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_sub8rm_sub8rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr8 } +liveins: + - { reg: '%cl', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_sub8rm_sub8rr_test + %2 = COPY %cl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: SUB8rm + %al = SUB8rr undef %bl, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_vrcpssm_vrcpssr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrcpssm_vrcpssr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCPSSm + %xmm0 = VRCPSSr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vrcpssm_int_vrcpssr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrcpssm_int_vrcpssr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRCPSSm_Int + %xmm0 = VRCPSSr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vrsqrtssm_vrsqrtssr_test +tracksRegLiveness: true +registers: + - { id: 2, class: fr32 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrtssm_vrsqrtssr_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRTSSm + %xmm0 = VRSQRTSSr undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_vrsqrtssm_int_vrsqrtssr_int_test +tracksRegLiveness: true +registers: + - { id: 2, class: vr128 } +liveins: + - { reg: '%xmm2', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %xmm2 + + ; CHECK-LABEL: name: stack_fold_vrsqrtssm_int_vrsqrtssr_int_test + %2 = COPY %xmm2 + INLINEASM $nop, 1, 12, implicit-def %xmm0, 12, implicit-def %xmm1, 12, implicit-def %xmm2, 12, implicit-def %xmm3, 12, implicit-def %xmm4, 12, implicit-def %xmm5, 12, implicit-def %xmm6, 12, implicit-def %xmm7, 12, implicit-def %xmm8, 12, implicit-def %xmm9, 12, implicit-def %xmm10, 12, implicit-def %xmm11, 12, implicit-def %xmm12, 12, implicit-def %xmm13, 12, implicit-def %xmm14, 12, implicit-def %xmm15, 12, implicit-def %xmm16, 12, implicit-def %xmm17, 12, implicit-def %xmm18, 12, implicit-def %xmm19, 12, implicit-def %xmm20, 12, implicit-def %xmm21, 12, implicit-def %xmm22, 12, implicit-def %xmm23, 12, implicit-def %xmm24, 12, implicit-def %xmm25, 12, implicit-def %xmm26, 12, implicit-def %xmm27, 12, implicit-def %xmm28, 12, implicit-def %xmm29, 12, implicit-def %xmm30, 12, implicit-def %xmm31 + ; CHECK: VRSQRTSSm_Int + %xmm0 = VRSQRTSSr_Int undef %xmm1, %2 + RET 0 +... +--- +name: stack_fold_xor16rm_xor16rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_xor16rm_xor16rr_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR16rm + %ax = XOR16rr undef %bx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_xor32rm_xor32rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_xor32rm_xor32rr_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR32rm + %eax = XOR32rr undef %ebx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_xor64rm_xor64rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_xor64rm_xor64rr_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR64rm + %rax = XOR64rr undef %rbx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_xor8rm_xor8rr_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr8 } +liveins: + - { reg: '%cl', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cl + + ; CHECK-LABEL: name: stack_fold_xor8rm_xor8rr_test + %2 = COPY %cl + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: XOR8rm + %al = XOR8rr undef %bl, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_add16rm_add16rr_db_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr16 } +liveins: + - { reg: '%cx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %cx + + ; CHECK-LABEL: name: stack_fold_add16rm_add16rr_db_test + %2 = COPY %cx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD16rm + %ax = ADD16rr_DB undef %bx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_add32rm_add32rr_db_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr32 } +liveins: + - { reg: '%ecx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %ecx + + ; CHECK-LABEL: name: stack_fold_add32rm_add32rr_db_test + %2 = COPY %ecx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD32rm + %eax = ADD32rr_DB undef %ebx, %2, implicit-def %eflags + RET 0 +... +--- +name: stack_fold_add64rm_add64rr_db_test +tracksRegLiveness: true +registers: + - { id: 2, class: gr64 } +liveins: + - { reg: '%rcx', virtual-reg: '%2' } +body: | + bb.0 (%ir-block.0): + liveins: %rcx + + ; CHECK-LABEL: name: stack_fold_add64rm_add64rr_db_test + %2 = COPY %rcx + INLINEASM $nop, 1, 12, implicit-def %rax, 12, implicit-def %rbx, 12, implicit-def %rcx, 12, implicit-def %rdx, 12, implicit-def %rbp, 12, implicit-def %rsp, 12, implicit-def %rsi, 12, implicit-def %rdi, 12, implicit-def %r8, 12, implicit-def %r9, 12, implicit-def %r10, 12, implicit-def %r11, 12, implicit-def %r12, 12, implicit-def %r13, 12, implicit-def %r14, 12, implicit-def %r15 + ; CHECK: ADD64rm + %rax = ADD64rr_DB undef %rbx, %2, implicit-def %eflags + RET 0 +...