[PATCH] D150143: [X86] Add X86FixupVectorConstantsPass to fold vectors constant loads as broadcasts (WIP)
Phoebe Wang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon May 8 21:12:04 PDT 2023
pengfei added inline comments.
================
Comment at: llvm/lib/Target/X86/X86FixupVectorConstants.cpp:208
+ case X86::VMOVDQUrm:
+ if (ST->hasInt256())
+ return ConvertToBroadcastInt(X86::VPBROADCASTQrm, X86::VPBROADCASTDrm,
----------------
What's the reason to check `hasInt256` rather than `hasAVX2`?
================
Comment at: llvm/lib/Target/X86/X86FixupVectorConstants.cpp:211
+ X86::VPBROADCASTWrm, X86::VPBROADCASTBrm);
+ return false; // TODO: Add AVX VMOVDDUP/VBROADCASTSS.
+ case X86::VMOVDQAYrm:
----------------
Should avoid FP instruction for integer?
================
Comment at: llvm/lib/Target/X86/X86FixupVectorConstants.cpp:227
+ case X86::VMOVUPSrm:
+ return ConvertToBroadcastFP(X86::VMOVDDUPrm, X86::VBROADCASTSSrm);
+ case X86::VMOVAPDYrm:
----------------
Why don't use `VBROADCASTSD` here?
================
Comment at: llvm/test/CodeGen/X86/combine-concatvectors.ll:67-68
; AVX2-NEXT: vmovups %ymm0, 48296(%rax)
-; AVX2-NEXT: vmovlps %xmm0, 47372(%rax)
+; AVX2-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
+; AVX2-NEXT: vmovsd %xmm0, 47372(%rax)
; AVX2-NEXT: vzeroupper
----------------
Regression?
================
Comment at: llvm/test/CodeGen/X86/horizontal-reduce-umin.ll:1170-1171
; X86-AVX2-NEXT: vextractf128 $1, %ymm0, %xmm1
+; X86-AVX2-NEXT: vmovddup {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
+; X86-AVX2-NEXT: ## xmm2 = mem[0,0]
; X86-AVX2-NEXT: vxorpd %xmm2, %xmm0, %xmm3
----------------
This looks like regression too.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D150143/new/
https://reviews.llvm.org/D150143
More information about the llvm-commits
mailing list