[llvm] [X86] Lower vector integer division and remainder through float division (PR #205263)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Jul 18 23:38:02 PDT 2026
================
@@ -1193,42 +882,283 @@ define <3 x i10> @urem_v3i10(<3 x i10> %x, <3 x i10> %y, <3 x i1> %m) {
; AVX512-NEXT: vpinsrd $1, %esi, %xmm0, %xmm0
; AVX512-NEXT: vpinsrd $2, %edx, %xmm0, %xmm0
; AVX512-NEXT: vpbroadcastd {{.*#+}} xmm1 = [1023,1023,1023,1023]
-; AVX512-NEXT: movb $7, %al
-; AVX512-NEXT: kmovd %eax, %k1
-; AVX512-NEXT: vmovd {{.*#+}} xmm2 = mem[0],zero,zero,zero
-; AVX512-NEXT: vpinsrb $1, {{[0-9]+}}(%rsp), %xmm2, %xmm2
-; AVX512-NEXT: vpinsrb $2, {{[0-9]+}}(%rsp), %xmm2, %xmm2
-; AVX512-NEXT: vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zero,zero,zero,xmm2[3],zero,zero,zero
-; AVX512-NEXT: vpbroadcastd {{.*#+}} xmm3 = [1,1,1,1]
-; AVX512-NEXT: vmovd %ecx, %xmm4
-; AVX512-NEXT: vpinsrd $1, %r8d, %xmm4, %xmm4
-; AVX512-NEXT: vptestmd %xmm3, %xmm2, %k1 {%k1}
-; AVX512-NEXT: vpinsrd $2, %r9d, %xmm4, %xmm2
-; AVX512-NEXT: vpandd %xmm1, %xmm2, %xmm3 {%k1}
-; AVX512-NEXT: vpextrd $1, %xmm3, %ecx
+; AVX512-NEXT: vmovd %ecx, %xmm2
+; AVX512-NEXT: vpinsrd $1, %r8d, %xmm2, %xmm2
+; AVX512-NEXT: vpinsrd $2, %r9d, %xmm2, %xmm2
; AVX512-NEXT: vpand %xmm1, %xmm0, %xmm0
-; AVX512-NEXT: vpextrd $1, %xmm0, %eax
-; AVX512-NEXT: xorl %edx, %edx
-; AVX512-NEXT: divl %ecx
-; AVX512-NEXT: movl %edx, %ecx
-; AVX512-NEXT: vmovd %xmm3, %esi
+; AVX512-NEXT: vpand %xmm1, %xmm2, %xmm1
+; AVX512-NEXT: vcvtdq2pd %xmm1, %ymm2
+; AVX512-NEXT: vcvtdq2pd %xmm0, %ymm3
+; AVX512-NEXT: vdivpd %ymm2, %ymm3, %ymm2
----------------
Andarwinux wrote:
Since llvm 23.x has been branched, this work should be able to continue?
https://github.com/llvm/llvm-project/pull/205263
More information about the llvm-commits
mailing list