[llvm] [X86] Move Non-VLX handling for VPMADD52 instructions entirely into tablegen (PR #200800)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 1 07:31:36 PDT 2026


================
@@ -169,7 +169,8 @@ define <4 x i64> @test_mul_52bit_ymm(<4 x i64> %a, <4 x i64> %b) {
 ; NOVLX-NEXT:    vpand %ymm2, %ymm0, %ymm0
 ; NOVLX-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [524287,524287,524287,524287]
 ; NOVLX-NEXT:    vpand %ymm2, %ymm1, %ymm1
-; NOVLX-NEXT:    vpmullq %zmm1, %zmm0, %zmm0
+; NOVLX-NEXT:    vpxor %xmm2, %xmm2, %xmm2
+; NOVLX-NEXT:    vpmadd52luq %zmm2, %zmm1, %zmm0
----------------
RKSimon wrote:

NOVLX is a cannonlake with vlx disabled - so it has a slow vpmullq instruction and we prefer vpmadd52 to vpmullq if we have suitable multiply operands - xmm2/zmm2 is the (zero) accumulator.

https://github.com/llvm/llvm-project/pull/200800


More information about the llvm-commits mailing list