@@ -726,7 +726,9 @@ define i8 @test_int_x86_avx512_fpclass_pd_512(<8 x double> %x0) {
726726; CHECK-LABEL: test_int_x86_avx512_fpclass_pd_512:
727727; CHECK: # %bb.0:
728728; CHECK-NEXT: vfpclasspd $2, %zmm0, %k1 # encoding: [0x62,0xf3,0xfd,0x48,0x66,0xc8,0x02]
729+ ; CHECK-NEXT: # k1 = isPositiveZero(zmm0)
729730; CHECK-NEXT: vfpclasspd $4, %zmm0, %k0 {%k1} # encoding: [0x62,0xf3,0xfd,0x49,0x66,0xc0,0x04]
731+ ; CHECK-NEXT: # k0 {%k1} = isNegativeZero(zmm0)
730732; CHECK-NEXT: kmovw %k0, %eax # encoding: [0xc5,0xf8,0x93,0xc0]
731733; CHECK-NEXT: # kill: def $al killed $al killed $eax
732734; CHECK-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
@@ -743,7 +745,9 @@ define i16@test_int_x86_avx512_fpclass_ps_512(<16 x float> %x0) {
743745; CHECK-LABEL: test_int_x86_avx512_fpclass_ps_512:
744746; CHECK: # %bb.0:
745747; CHECK-NEXT: vfpclassps $2, %zmm0, %k1 # encoding: [0x62,0xf3,0x7d,0x48,0x66,0xc8,0x02]
748+ ; CHECK-NEXT: # k1 = isPositiveZero(zmm0)
746749; CHECK-NEXT: vfpclassps $4, %zmm0, %k0 {%k1} # encoding: [0x62,0xf3,0x7d,0x49,0x66,0xc0,0x04]
750+ ; CHECK-NEXT: # k0 {%k1} = isNegativeZero(zmm0)
747751; CHECK-NEXT: kmovw %k0, %eax # encoding: [0xc5,0xf8,0x93,0xc0]
748752; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
749753; CHECK-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
@@ -761,7 +765,9 @@ define i8 @test_int_x86_avx512_mask_fpclass_sd(<2 x double> %x0) {
761765; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_sd:
762766; CHECK: # %bb.0:
763767; CHECK-NEXT: vfpclasssd $4, %xmm0, %k1 # encoding: [0x62,0xf3,0xfd,0x08,0x67,0xc8,0x04]
768+ ; CHECK-NEXT: # k1 = isNegativeZero(xmm0)
764769; CHECK-NEXT: vfpclasssd $2, %xmm0, %k0 {%k1} # encoding: [0x62,0xf3,0xfd,0x09,0x67,0xc0,0x02]
770+ ; CHECK-NEXT: # k0 {%k1} = isPositiveZero(xmm0)
765771; CHECK-NEXT: kmovw %k0, %eax # encoding: [0xc5,0xf8,0x93,0xc0]
766772; CHECK-NEXT: # kill: def $al killed $al killed $eax
767773; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
@@ -775,13 +781,15 @@ define i8 @test_int_x86_avx512_mask_fpclass_sd_load(ptr %x0ptr) {
775781; X86: # %bb.0:
776782; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
777783; X86-NEXT: vfpclasssd $4, (%eax), %k0 # encoding: [0x62,0xf3,0xfd,0x08,0x67,0x00,0x04]
784+ ; X86-NEXT: # k0 = isNegativeZero(mem)
778785; X86-NEXT: kmovw %k0, %eax # encoding: [0xc5,0xf8,0x93,0xc0]
779786; X86-NEXT: # kill: def $al killed $al killed $eax
780787; X86-NEXT: retl # encoding: [0xc3]
781788;
782789; X64-LABEL: test_int_x86_avx512_mask_fpclass_sd_load:
783790; X64: # %bb.0:
784791; X64-NEXT: vfpclasssd $4, (%rdi), %k0 # encoding: [0x62,0xf3,0xfd,0x08,0x67,0x07,0x04]
792+ ; X64-NEXT: # k0 = isNegativeZero(mem)
785793; X64-NEXT: kmovw %k0, %eax # encoding: [0xc5,0xf8,0x93,0xc0]
786794; X64-NEXT: # kill: def $al killed $al killed $eax
787795; X64-NEXT: retq # encoding: [0xc3]
@@ -796,7 +804,9 @@ define i8 @test_int_x86_avx512_mask_fpclass_ss(<4 x float> %x0) {
796804; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_ss:
797805; CHECK: # %bb.0:
798806; CHECK-NEXT: vfpclassss $4, %xmm0, %k1 # encoding: [0x62,0xf3,0x7d,0x08,0x67,0xc8,0x04]
807+ ; CHECK-NEXT: # k1 = isNegativeZero(xmm0)
799808; CHECK-NEXT: vfpclassss $2, %xmm0, %k0 {%k1} # encoding: [0x62,0xf3,0x7d,0x09,0x67,0xc0,0x02]
809+ ; CHECK-NEXT: # k0 {%k1} = isPositiveZero(xmm0)
800810; CHECK-NEXT: kmovw %k0, %eax # encoding: [0xc5,0xf8,0x93,0xc0]
801811; CHECK-NEXT: # kill: def $al killed $al killed $eax
802812; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
@@ -810,13 +820,15 @@ define i8 @test_int_x86_avx512_mask_fpclass_ss_load(ptr %x0ptr, i8 %x1) {
810820; X86: # %bb.0:
811821; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
812822; X86-NEXT: vfpclassss $4, (%eax), %k0 # encoding: [0x62,0xf3,0x7d,0x08,0x67,0x00,0x04]
823+ ; X86-NEXT: # k0 = isNegativeZero(mem)
813824; X86-NEXT: kmovw %k0, %eax # encoding: [0xc5,0xf8,0x93,0xc0]
814825; X86-NEXT: # kill: def $al killed $al killed $eax
815826; X86-NEXT: retl # encoding: [0xc3]
816827;
817828; X64-LABEL: test_int_x86_avx512_mask_fpclass_ss_load:
818829; X64: # %bb.0:
819830; X64-NEXT: vfpclassss $4, (%rdi), %k0 # encoding: [0x62,0xf3,0x7d,0x08,0x67,0x07,0x04]
831+ ; X64-NEXT: # k0 = isNegativeZero(mem)
820832; X64-NEXT: kmovw %k0, %eax # encoding: [0xc5,0xf8,0x93,0xc0]
821833; X64-NEXT: # kill: def $al killed $al killed $eax
822834; X64-NEXT: retq # encoding: [0xc3]
0 commit comments